I think g++ incorrectly rejects the following code when compiled with
-std=c++0x:
template <typename> struct X {};
X<decltype(1 > 2)> x;
// t.cpp:2: error: template argument 1 is invalid
// t.cpp:2: error: invalid type in declaration before ; token
For comparison, here is very similar code that is accepted:
template <int> struct Y {};
Y<sizeof(1 > 2)> y;
Hence, I suspect it is a problem with decltype.
--
Summary: [c++0x] misinterpreted closing angle bracket in decltype
operand
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gcc-bugzilla at contacts dot eelis dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37875