emplace() 및 친구와 관련하여보다 미세한 점 중 하나를 놓치고 있어야합니다. 여기서 4.9.3 ++ g의 문제점을 재생하는 전체 최소 예제 :g ++ 4.9.3은 femplended ctor가 .emplace_back()과 함께 개인적인 것으로 불평하지만 .push_back()을 좋아합니다.
class Foo
{
public:
class Bar
{
private:
friend class Foo;
Bar(Foo &foo) : foo(foo) {}
Foo &foo;
};
Bar &getBar()
{
//bars.push_back(*this); // works fine
bars.emplace_back(*this); // Foo::Bar::Bar(Foo&) is private
return bars.back();
}
private:
std::vector<Bar> bars;
};
편집을 롤백했습니다. 답변을 받으면 질문을 변경하지 마십시오. 새로운 질문이있는 경우 새로운 질문을 게시하십시오. – Barry