是否有原因(除了由于标准如此规定以外>)为什么不允许以下代码?
struct Foo { ~Foo() && {} ~Foo() & {} };
我知道这是非法的,但我想知道为什么。
我在考虑旧的避免未命名实例
的问题,即使用保护对象时,例如:void do_something() { std::lock_guard{my_mutex}; // some synchronized operation }
这是合法代码,但显然很容易出错,因为锁保护在构造后会立即被销毁,因为它是一个临时(未命名)对象。
我打算做这样的事情
struct Foo { ~Foo() && = delete; ~Foo() & = default; };
如果类型被构造为临时类型,则会出现编译器错误。
是否有原因(除了因为标准这样说外),为什么不允许以下代码? struct Foo {〜Foo()&& {}〜Foo()&{}};我知道这是非法的,但我...
首先,每个类只能有一个析构函数。在析构函数上允许ref-qualifiers