尝试[[nodiscard]]但没有成功

时间:2017-07-09 13:05:50

标签: c++ visual-studio-2017 c++17

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

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

编辑:我自然意味着在第二部分发出警告。纠正。 :)

1 个答案:

答案 0 :(得分:1)

实际上只有VS 2017.3以后才支持[[nodiscard]],它应该为您提供警告,而不是错误。据我所知,规范假设编译器可能警告你。可能不会。