- #include <type_traits> 
- #include <iostream> 
- class Base 
- {}; 
- class Derived : public Base 
- {}; 
- template <class T, class Enabler=void> 
- class Partialy 
- { 
- public: 
- 	void say() 
- 	{ 
- 		std::cout << "Partialy Default" << std::endl; 
- 	} 
- }; 
-   
-   
- template <class T> 
- class Partialy<T, typename std::enable_if<std::is_base_of< Base, T >::value>::type> 
- { 
- public: 
- 	void say() 
- 	{ 
- 		std::cout << "Partialy special" << std::endl; 
- 	} 
- }; 
-   
- int main(void) 
- { 
- 	Derived a; 
- 	Partialy<Derived> b; 
- 	b.say(); 
- } 
				I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CmNsYXNzIEJhc2UKe307CmNsYXNzIERlcml2ZWQgOiBwdWJsaWMgQmFzZQp7fTsKdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEVuYWJsZXI9dm9pZD4KY2xhc3MgUGFydGlhbHkKewpwdWJsaWM6Cgl2b2lkIHNheSgpCgl7CgkJc3RkOjpjb3V0IDw8ICJQYXJ0aWFseSBEZWZhdWx0IiA8PCBzdGQ6OmVuZGw7Cgl9Cn07CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmNsYXNzIFBhcnRpYWx5PFQsIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYmFzZV9vZjwgQmFzZSwgVCA+Ojp2YWx1ZT46OnR5cGU+CnsKcHVibGljOgoJdm9pZCBzYXkoKQoJewoJCXN0ZDo6Y291dCA8PCAiUGFydGlhbHkgc3BlY2lhbCIgPDwgc3RkOjplbmRsOwoJfQp9OwoKaW50IG1haW4odm9pZCkKewoJRGVyaXZlZCBhOwoJUGFydGlhbHk8RGVyaXZlZD4gYjsKCWIuc2F5KCk7Cn0=