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; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgQSB7CiAgQSgpe30KICBBKGNvbnN0IEEgJil7IHN0ZDo6Y291dCA8PCAiSU4gQSIgPDwgc3RkOjplbmRsOyB9Cn07CgpzdHJ1Y3QgQiA6IHB1YmxpYyBBewogIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3MsCiAgICB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmCiAgICAgIDwKICAgICAgICBzdGQ6OmlzX2NvbnN0cnVjdGlibGU8QSwgQXJncy4uLj46OnZhbHVlCiAgICAgID46OnR5cGU+CiAgICBCKEFyZ3MgJiYuLi5hcmdzKQogICAgIDogQShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pIHt9Cn07CnRlbXBsYXRlPD4KaW5saW5lIEI6OkIoY29uc3QgQSAmYSk6QShhKXsgc3RkOjpjb3V0IDw8ICJJTiBCLUEiIDw8IHN0ZDo6ZW5kbDsgfQp0ZW1wbGF0ZTw+ICAKaW5saW5lIEI6OkIoY29uc3QgQiAmYik6QShiKXsgc3RkOjpjb3V0IDw8ICJJTiBCLUIiIDw8IHN0ZDo6ZW5kbDsgfQoKaW50IG1haW4oKXsKICBBIGE7CiAgQiBiKGEpOwogIEIgYjEoYik7CiAgcmV0dXJuIDA7Cn0=
-
upload with new input
-
result: Success time: 0s memory: 2884 kB returned value: 0
IN A IN A


