fork(2) download
  1. enum class SomeEnum { ONE, TWO, THREE };
  2.  
  3. template<typename Enum>
  4. class Flags {
  5. Flags(const Flags& f) { };
  6. Flags(Enum e) { };
  7.  
  8. Flags& operator |=(Flags<Enum> f) {
  9. //...;
  10. return *this;
  11. }
  12.  
  13. friend Flags operator |(Enum a, Flags b) { return b | a; }
  14. friend Flags operator |(Flags a, Enum b) { return a |= b; }
  15. };
  16.  
  17.  
  18. int main() {
  19. Flags<SomeEnum> flags = SomeEnum::ONE | SomeEnum::TWO;
  20. return 0;
  21. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:19:43: error: no match for ‘operator|’ (operand types are ‘SomeEnum’ and ‘SomeEnum’)
     Flags<SomeEnum> flags = SomeEnum::ONE | SomeEnum::TWO;
                             ~~~~~~~~~~~~~~^~~~~~~~~~
stdout
Standard output is empty