我正在尝试测试一点C++ 17。我正在尝试做:

[[nodiscard]] int get_value1()
{
    return 42;
}

inline void start()
{
    // Should generate warning
    get_value1();
}

但是,事实并非如此。我正在使用Visual Studio2017。警告级别设置为Level4(\ W4)。我已将C++语言标准设置为ISO C++最新草稿标准(/ std:c++ latest)。

但是它不会生成我想要的警告。这是为什么?另外,还有一个小问题:用于选择语言标准的选项卡仅出现在Debug配置中,而不出现在Release中。这是为什么? Release在nodiscard上抱怨,这是否意味着Release在C++ 14中?

编辑:自然,我的意思是在第二部分中发出警告。已更正。 :)

最佳答案

实际上,仅从VS 2017.3开始才支持[[nodiscard]],它应该为您提供警告,而不是错误。据我了解,规范假设编译器可能会警告您。可能不会。

09-07 23:51