fork(6) download
  1. #include <iostream>
  2. #include <type_traits>
  3.  
  4. using namespace std;
  5.  
  6. // Variant 1:
  7.  
  8. class I1 {
  9. public:
  10. virtual ~I1() {}
  11. };
  12.  
  13. // Variant 2.1:
  14.  
  15. class I21 {
  16. public:
  17. virtual ~I21() = 0;
  18. };
  19.  
  20. I21::~I21() {}
  21.  
  22. // Variant 2.2:
  23.  
  24. class I22 {
  25. public:
  26. virtual ~I22() = 0;
  27. };
  28.  
  29. I22::~I22() = default;
  30.  
  31. int main() {
  32. cout << boolalpha << "std::is_abstract:\n";
  33.  
  34. cout << "I1: " << std::is_abstract<I1>::value << '\n';
  35. cout << "I21: " << std::is_abstract<I21>::value << '\n';
  36. cout << "I22: " << std::is_abstract<I22>::value << '\n';
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
std::is_abstract:
I1:  false
I21: true
I22: true