https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64831
Bug ID: 64831 Summary: Preprocessing # operator with C++11 user-defined literal produces bad output Product: gcc Version: 4.9.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: preprocessor Assignee: unassigned at gcc dot gnu.org Reporter: holger.gr...@ix-n.net $ cat t.cpp #define S1(a) S2(a) #define S2(a) #a void foo() { S1("bla"_udl); } $ c++ t.cpp -E -P void foo() { "\"bla\"_udl"; } $ c++ t.cpp -E -P -std=c++11 void foo() { ""bla"_udl"; } Feeding the resulting output from c++11 mode into the compiler gives an error: $ c++ t.cpp -E -P | c++ -c -xc++ -std=c++11 - $ c++ t.cpp -E -P -std=c++11 | c++ -c -xc++ -std=c++11 - <stdin>: In function ‘void foo()’: <stdin>:3:8: error: unable to find string literal operator ‘operator""bla’ This breaks https://github.com/icecc/icecream for remote compilation.