On 23 December 2011 09:06, Miles Bader <[email protected]> wrote:
> Is the following code valid?
>
> #include <tuple>
>
> struct X
> {
> std::tuple<int,int> tt{1, 2}; // works
> };
>
> struct Y
> {
> std::tuple<int,int> tt = std::tuple<int,int>{1, 2}; // *error*
> };
>
> 'cause it results in an error with gcc 20111210:
>
> $ g++-snapshot -c -std=c++11 nsdmi2.cc
> nsdmi2.cc:10:43: error: expected unqualified-id before 'int'
>
> $ g++-snapshot --version
> g++ (Debian 20111210-1) 4.7.0 20111210 (experimental) [trunk revision
> 182188]
> Copyright (C) 2011 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.
Yes, it's valid, please report it to bugzilla.
Here's a reduced form:
template<typename T, typename U>
struct tuple
{
tuple(T, U) { }
};
struct Y
{
tuple<int, int> tt = tuple<int, int>{1, 2}; // *error*
};