language: C++11 (gcc-4.7.2)
date: 286 days 21 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
struct A {
  A(){}
  A(const A &){ std::cout << "IN A" << std::endl; }
};
 
struct B : public A{
  template<typename ...Args,
    typename = typename std::enable_if
      <
        std::is_constructible<A, Args...>::value
      >::type>
    B(Args &&...args)
     : A(std::forward<Args>(args)...) {}
};
template<>
inline B::B(const A &a):A(a){ std::cout << "IN B-A" << std::endl; }
template<>  
inline B::B(const B &b):A(b){ std::cout << "IN B-B" << std::endl; }
 
int main(){
  A a;
  B b(a);
  B b1(b);
  return 0;
}