fork(1) download
  1. #include <iostream>
  2. #include <cstdint>
  3. using namespace std;
  4.  
  5. constexpr uint16_t operator "" _int(char const * s, size_t len)
  6. {
  7. return (len == 2) ? s[0] | (s[1] << 8) : throw "len must be 2!";
  8. }
  9.  
  10. int main() {
  11. constexpr uint16_t i1 = "AB"_int; // OK
  12. cout << i1 << endl;
  13. constexpr uint16_t i2 = "ABC"_int; // error
  14. cout << i2 << endl;
  15. return 0;
  16. }
Compilation error #stdin compilation error #stdout 0s 4452KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:13:29:   in constexpr expansion of ‘operator""_int(((const char*)"ABC"), 3ul)’
prog.cpp:7:52: error: expression ‘<throw-expression>’ is not a constant-expression
     return (len == 2) ? s[0] | (s[1] << 8) : throw "len must be 2!";
                                                    ^~~~~~~~~~~~~~~~
stdout
Standard output is empty