fork(3) download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5.  
  6. template<typename T>
  7. struct Module
  8. {
  9. std::map<typename T::Values, int> values;
  10. };
  11.  
  12. struct ConcreteModule : Module<ConcreteModule>
  13. {
  14. enum class Values
  15. {
  16. one,
  17. two
  18. };
  19. };
  20.  
  21. int main() {
  22.  
  23. return 0;
  24. }
Compilation error #stdin compilation error #stdout 0s 15240KB
stdin
Standard input is empty
compilation info
prog.cpp: In instantiation of ‘struct Module<ConcreteModule>’:
prog.cpp:12:25:   required from here
prog.cpp:9:36: error: invalid use of incomplete type ‘struct ConcreteModule’
  std::map<typename T::Values, int> values;
                                    ^~~~~~
prog.cpp:12:8: note: forward declaration of ‘struct ConcreteModule’
 struct ConcreteModule : Module<ConcreteModule>
        ^~~~~~~~~~~~~~
stdout
Standard output is empty