在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。爲什麼我會得到這個錯誤?
此聲明爲
h {5};在www.ideone.com上可以成功編譯 –