http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49813
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2011.07.22 14:41:46 AssignedTo|unassigned at gcc dot |jason at gcc dot gnu.org |gnu.org | Ever Confirmed|0 |1 --- Comment #19 from Jason Merrill <jason at gcc dot gnu.org> 2011-07-22 14:41:46 UTC --- Strictly speaking, the bug is that constexpr double ds = sinh(1.0); // Ok is accepted; the standard doesn't say that sinh is constexpr, so it isn't usable in a constant expression. G++ treating built-ins as constexpr is an extension, which should be disabled in strict conformance mode. Paolo, can you raise the question of marking C library functions as constexpr with the library WG? But practically speaking, we should have C90 builtins in C++98, and C99 builtins in C++11. I suppose that means setting flag_isoc94 and flag_isoc99 in C++.