1

我正在尝试测试一点 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 中?

编辑:当然我的意思是第二部分的警告。已更正。:)

4

1 回答 1

1

实际上 [[nodiscard]] 仅从 VS 2017.3 开始受支持,它应该给你一个警告,而不是一个错误。据我了解,规范假定编译器可能会警告您。而且可能不会。

于 2017-07-09T13:15:36.043 回答