【发布时间】:2016-01-15 01:12:21
【问题描述】:
是否有任何编译器选项允许您在尝试分配给临时对象时收到警告?
例子:
struct S {
S op() { return S(); }
};
int main() {
S s;
s.op() = s; // assign to temporary. Wants to warn here.
}
我知道您可以将op 的返回类型声明为const 以防止出现这种情况,但现在我感兴趣的只是编译器选项。
您可以使用任何流行的现代编译器。
【问题讨论】:
-
你怎么知道(一般来说)这是没有意义的?分配可能有副作用:
Database db; db.SinkValue() = 5; -
@KerrekSB 假设我只想收到警告。分配无意义 - 不会被考虑。
-
S& operator=(const S&) & = default;是比返回 const 实例更好的选择 -
@juanchopanza 任何现代:gcc、clang、vc++
-
所以把它放在你的问题中。
标签: c++ compiler-warnings temporary-objects compiler-options