fork download
  1. #include <iostream>
  2.  
  3. struct NormalType { };
  4.  
  5. struct SpecialType { typedef int special; };
  6.  
  7. template <typename T, typename IsSpecial = void>
  8. struct DetectSpecial {
  9. void detected() { std::cout << "Not special...\n"; }
  10. };
  11.  
  12. template <typename T>
  13. struct DetectSpecial<T, typename T::special> {
  14. void detected() { std::cout << "Special!\n"; }
  15. };
  16.  
  17. int main() {
  18. DetectSpecial<NormalType>().detected();
  19. DetectSpecial<SpecialType>().detected();
  20. return 0;
  21. }
Success #stdin #stdout 0s 3340KB
stdin
Standard input is empty
stdout
Not special...
Not special...