fork download
  1. #include <iostream>
  2.  
  3. template<class X>
  4. class Foo
  5. {
  6. public:
  7. Foo(const std::initializer_list<X> &A) { std::cout << "Foo:: initializer_list" << std::endl; }
  8. Foo(size_t n) { std::cout << "Foo:: size_t" << std::endl; }
  9. };
  10.  
  11. class Bar
  12. {
  13. public:
  14. Bar() { std::cout << "Bar:: default" << std::endl; };
  15. Bar(const Foo<size_t> &A, bool a = true, bool b = true) { std::cout << "Bar:: Foo, (bool, bool)" << std::endl; };
  16. };
  17.  
  18. int main()
  19. {
  20. Bar{ }; // Bar:: default
  21. Bar{ 1 }; // Foo:: size_t, Bar:: Foo, (bool, bool)
  22. Bar{ 1, 1 }; // Foo:: size_t, Bar:: Foo, (bool, bool)
  23. Bar{ 1, 1, 1 }; // Foo:: size_t, Bar:: Foo, (bool, bool)
  24. Bar{ {1, 2, 3} }; // Foo:: initializer_list , Bar:: Foo, (bool, bool)
  25. Bar{ { 1, 2, 3 }, 1 }; // Foo:: initializer_list , Bar:: Foo, (bool, bool)
  26. Bar{ { 1, 2, 3 }, 1, 1 }; // Foo:: initializer_list , Bar:: Foo, (bool, bool)
  27. }
Success #stdin #stdout 0s 4180KB
stdin
Standard input is empty
stdout
Bar:: default
Foo:: size_t
Bar:: Foo, (bool, bool)
Foo:: size_t
Bar:: Foo, (bool, bool)
Foo:: size_t
Bar:: Foo, (bool, bool)
Foo:: initializer_list
Bar:: Foo, (bool, bool)
Foo:: initializer_list
Bar:: Foo, (bool, bool)
Foo:: initializer_list
Bar:: Foo, (bool, bool)