在 C++11 中,是否允许使用花括号语法复制聚合?我有以下代码:
struct s
{
int x;
};
template<class T>
struct holder
{
template<class A>
holder(A&& x) : t{x} {}
T t;
};
下面的每一个陈述都有效。
auto s1 = s{1};
auto s2(s1);
auto s3{s1}; ///NOTE : this works!
但是,下面的第二个语句引发了错误cannot convert 's' to 'int' in initialization
。
holder<s> h{5};
holder<s> h1{s{5}};
我正在使用 gcc 4.8.2。为什么我会收到此错误?