fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. enum Type {
  5. AType = 0,
  6. BType,
  7. CType,
  8. };
  9.  
  10. void AOpen() { std::cout << "A open." << std::endl; }
  11. void BOpen() { std::cout << "B open." << std::endl; }
  12. void COpen() { std::cout << "C open." << std::endl; }
  13.  
  14. template<Type T>
  15. class TypeWrapper {
  16. public:
  17. void open();
  18. void close();
  19. };
  20.  
  21. template<>
  22. void TypeWrapper<AType>::open() { AOpen(); }
  23.  
  24. template<>
  25. void TypeWrapper<BType>::open() { BOpen(); }
  26.  
  27. template<>
  28. void TypeWrapper<CType>::open() { COpen(); }
  29.  
  30. int main() {
  31. TypeWrapper<AType> wrapped_a;
  32. TypeWrapper<BType> wrapped_b;
  33. wrapped_a.open();
  34. wrapped_b.open();
  35. return 0;
  36. }
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
A open.
B open.