提问人:sberfiacreix 提问时间:5/12/2023 最后编辑:Evgsberfiacreix 更新时间:5/12/2023 访问量:101
有没有办法防止在不将构造函数分配给变量的情况下调用构造函数?
Is there a way to prevent calling the constructor without assigning it to a variable?
答:
8赞
local-ninja
5/12/2023
#1
可以将 nodiscard
属性用于类型(使用 C++ 17 或更高版本)。
struct [[nodiscard]] Object {};
auto main() -> int {
Object{}; // error
return 0;
}
评论
0赞
François Andrieux
5/12/2023
似乎不起作用:godbolt.org/z/jz4EYsaqT
1赞
Richard Critten
5/12/2023
适用于 clang 和 MSVC,gcc 忽略它 - live - godbolt.org/z/Gs5Wrfqez .更新所有 3 个报告构造函数上的属性问题 - 实时 - godbolt.org/z/b6on7h3xd
0赞
Paul Sanders
5/12/2023
我很惊讶这个问题没有得到更多的赞成票
0赞
sberfiacreix
5/12/2023
@PaulSanders我很惊讶我在这里找不到类似的问题/答案,也许我可以改写标题或以更好的方式问它?
0赞
Paul Sanders
5/12/2023
也许“我能否确保,当调用构造函数时,结果被分配给一个变量,而不是简单地丢弃”。嗯,不确定这是否是一种改进。
评论