https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68288
Bug ID: 68288 Summary: botched floating-point UDL Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: lucdanton at free dot fr Target Milestone: --- I'm seeing this behaviour with GCC 6, GCC 5.2.0 and GCC 4.9.2. $ g++-trunk --version g++-trunk (GCC) 6.0.0 20151103 (experimental) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ cat main.cpp long double operator""_a(long double) { return {}; } long double operator""_e(long double) { return {}; } int main() { // all fine void(0e1_a+0); void(0e1_e*0); void(0e1_e +0); // error: unable to find numeric literal operator 'operator""e+0' void(0e1_e+0); } $ g++-trunk -std=c++11 main.cpp main.cpp: In function 'int main()': main.cpp:10:10: error: unable to find numeric literal operator 'operator""_e+0' void(0e1_e+0); ^ main.cpp:10:10: note: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes