鉴于以下代码,它会发出警告:
警告:临时绑定到'Foo :: b'只会持续到 构造函数退出[-Wextra]
struct Bar {
inline void print() const { std::cout << "Bar" << std::endl; }
};
struct Foo {
Foo() : b{} {} // create temporary
void print() const { b.print(); } // OK but I'm expecting a crash here
Bar&& b;
};
Foo f; // Expecting lifetime of temporary ends here
f.print(); // OK - prints "Bar"
我希望通过Bar::print()
访问Foo::b
会导致Foo
的构造函数退出后崩溃。
程序如何在没有崩溃的情况下仍然调用Bar::print()
?