fork download
  1. #include <iostream>
  2.  
  3. #include <string>
  4.  
  5. #include <type_traits>
  6.  
  7.  
  8.  
  9. struct B { B() {} B(int) {} };
  10.  
  11. struct C {};
  12.  
  13.  
  14.  
  15. struct A : B, C
  16.  
  17. {
  18.  
  19. public:
  20.  
  21. template <
  22.  
  23. class T,
  24.  
  25. class =
  26.  
  27. typename std::enable_if<
  28.  
  29. std::is_convertible<T, B>::value, T>::type>
  30.  
  31. A(T&& t)
  32.  
  33. {
  34.  
  35. std::cout << "A(T&&)\n";
  36.  
  37. }
  38.  
  39.  
  40.  
  41. template <class... TArgs>
  42.  
  43. A(TArgs&&... targs)
  44.  
  45. {
  46.  
  47. std::cout << "A(TArgs&&)\n";
  48.  
  49. }
  50.  
  51. };
  52.  
  53.  
  54.  
  55. int main()
  56.  
  57. {
  58.  
  59. B b;
  60.  
  61.  
  62.  
  63. A a1(b);
  64.  
  65. A a2(4);
  66.  
  67. A a3("hello");
  68.  
  69.  
  70.  
  71. return 0;
  72.  
  73. }
  74.  
  75.  
  76.  
  77.  
Success #stdin #stdout 0s 2852KB
stdin
Standard input is empty
stdout
A(T&&)
A(T&&)
A(TArgs&&)