#include <memory>
struct foo
{
std::unique_ptr<int> p;
};
int main()
{
foo bar { std::unique_ptr<int>(new int(42)) };
// okay
new foo { std::unique_ptr<int>(new int(42)) };
// error: no matching function for call to
// 'foo::foo(<brace-enclosed initializer list>)'
}
统一初始化是否不适用于动态对象,或者这是 g++ 4.6.1 的缺点?
它适用于 g++ 4.7.1,但如果从另一个类继承,则这两行都main
无法编译:foo
struct baz
{
// no data members, just some member functions
};
struct foo : baz
{
std::unique_ptr<int> p;
};
再次,我的编译器的缺点?或者统一初始化不能很好地与继承一起使用?