此代码:
using namespace std;
struct A
{
A(string b)
{
cout << "A constructed: " << b << endl;
}
};
template <typename T>
struct B
{
A a{"Text"};
};
int main()
{
B<int> b;
}
会抛出此错误:
error: no matching function for call to 'A::A(<brace-enclosed initializer list>)'
,我不明白为什么这段代码无法编译,但更多的消费是当我:
B
常规(非模板)类OR a
(而不是在退出点)或A
的构造函数以取const char*
而不是string
或A a{"Test"}
更改为A a = "Test"
(复制构造函数)使用(g++ 4.8.1
编译,std=c++11
标记)