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 27 28 29 30 31 32 33 | #include <boost/type_traits.hpp> #include <boost/utility.hpp> #include <iostream> #include <ostream> using namespace std; struct Base1 {}; struct Derived1 : Base1 {}; struct Base2 {}; struct Derived2 : Base2 {}; template<typename T> typename boost::enable_if< boost::is_base_of<Base1, T>, void >::type f(T* p) { cout << "Base1" << endl; } template<typename T> typename boost::enable_if< boost::is_base_of<Base2, T>, void >::type f(T* p) { cout << "Base2" << endl; } int main() { Derived1 d1; Derived2 d2; f(&d1); f(&d2); } |
I2luY2x1ZGUgPGJvb3N0L3R5cGVfdHJhaXRzLmhwcD4KI2luY2x1ZGUgPGJvb3N0L3V0aWxpdHkuaHBwPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBCYXNlMSB7fTsKc3RydWN0IERlcml2ZWQxIDogQmFzZTEge307CgpzdHJ1Y3QgQmFzZTIge307CnN0cnVjdCBEZXJpdmVkMiA6IEJhc2UyIHt9OwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdHlwZW5hbWUgYm9vc3Q6OmVuYWJsZV9pZjwgYm9vc3Q6OmlzX2Jhc2Vfb2Y8QmFzZTEsIFQ+LCB2b2lkID46OnR5cGUgZihUKiBwKQp7CiAgICBjb3V0IDw8ICJCYXNlMSIgPDwgZW5kbDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdHlwZW5hbWUgYm9vc3Q6OmVuYWJsZV9pZjwgYm9vc3Q6OmlzX2Jhc2Vfb2Y8QmFzZTIsIFQ+LCB2b2lkID46OnR5cGUgZihUKiBwKQp7CiAgICBjb3V0IDw8ICJCYXNlMiIgPDwgZW5kbDsKfQoKaW50IG1haW4oKQp7CiAgICBEZXJpdmVkMSBkMTsKICAgIERlcml2ZWQyIGQyOwogICAgZigmZDEpOwogICAgZigmZDIpOwp9Cg==
-
upload with new input
-
result: Success time: 0.02s memory: 2724 kB returned value: 0
Base1 Base2


