【发布时间】:2017-12-13 06:49:06
【问题描述】:
我正在尝试测试一点 C++17。我正在尝试做:
[[nodiscard]] int get_value1()
{
return 42;
}
inline void start()
{
// Should generate warning
get_value1();
}
但是,事实并非如此。我正在使用 Visual Studio 2017。警告级别设置为 Level4(\W4)。我已将 C++ 语言标准设置为 ISO C++ 最新草案标准 (/std:c++latest)。
但它不会产生我想要的警告。这是为什么?另外,还有一个小问题:选择语言标准的选项卡仅出现在调试配置中,而不出现在发布中。这是为什么? Release 在 nodiscard 上报错,那是不是说 Release 是 C++14 的?
编辑:当然我的意思是第二部分的警告。已更正。 :)
【问题讨论】:
-
VS 还没有完全实现这些属性 AFAIK
-
关于你关于发布的问题,我希望在没有优化的情况下使某些功能工作比使用优化更容易。
-
是否有 Visual Studio 补丁说明/编译列表来介绍即将实现和/或将在即将发布的补丁中实现的功能,因为这将非常有帮助。
-
你使用哪个 VS 2017?实际上 [[nodiscard]] 仅从 VS 2017.3 开始支持。
-
我也认为要求的措辞有点偏离:"..编译器鼓励发出警告。"来源: en.cppreference.com/w/cpp/language/attributes当前草案中的相同措辞:open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
标签: c++ visual-studio-2017 c++17 nodiscard