[Bug c++/51478] New: constexpr not doing short-circuit evaluation

2011-12-08 Thread d...@boost-consulting.com
Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: d...@boost-consulting.com This program should compile, but instead it blows the instantiation stack. template int recurse = 0 constexpr int factorial(int n) { return n ? n

[Bug libstdc++/51452] New: has_nothrow_.*constructor bugs

2011-12-07 Thread d...@boost-consulting.com
Component: libstdc++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: d...@boost-consulting.com The traits that detect nothrow constructibility are buggy because they are influenced by whether the object has a nothrow dtor; destruction is invoked at the end of evaluation

[Bug libstdc++/51452] has_nothrow_.*constructor bugs

2011-12-07 Thread d...@boost-consulting.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51452 --- Comment #5 from d...@boost-consulting.com 2011-12-07 18:41:12 UTC --- (In reply to comment #1) I think this is by design, see the thread beginning with c++std-lib-30698 I've been surprised by that reasoning several times e.g. http

[Bug c++/51397] New: static_assert message formatting

2011-12-03 Thread d...@boost-consulting.com
Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: d...@boost-consulting.com I just noticed that GCC can be overly-helpful ;-) when formatting a static assertion message: static_assert('X' != '\130','X' has the wrong value); gives me error: static

[Bug other/51054] New: libitm doesn't build on MacOS 10.6

2011-11-09 Thread d...@boost-consulting.com
Component: other AssignedTo: unassig...@gcc.gnu.org ReportedBy: d...@boost-consulting.com The following command (which works for me with macports gmp,mpfr,and mpc, and a hand-built-from-source libiconv in /usr/local/lib) fails without --disable-libitm. export LDFLAGS=-L

[Bug c++/49808] New: GCC adds an address-of somewhere!

2011-07-21 Thread d...@boost-consulting.com
...@gcc.gnu.org ReportedBy: d...@boost-consulting.com Compile the following: template class X, X g struct A { A() { float r = g(0); } }; struct f_t { float operator() (float x) const { return 1; } }; f_t f; Af_t, f x; Now replace g(0) with (*g)(0). It compiles! It's almost