#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;
};
繰り返しますが、私のコンパイラの欠点ですか? それとも、均一な初期化は継承でうまく機能しませんか?