c++ - 尝试 [[nodiscard]] 没有成功

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

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

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

最佳答案

实际上 [[nodiscard]] 仅在 VS 2017.3 之后才受支持,它应该给你一个警告,而不是一个错误。据我了解,规范假设编译器可能会警告您。也可能不会。

关于c++ - 尝试 [[nodiscard]] 没有成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44996733/

相关文章:

c++ - 使用来自不同线程的 int64 的不同字节是否安全?

c++ - `operator delete`如何释放LinkedList节点的内存块

c++ - "The C Compiler [...] is not able to compile a simple test program"使用 CMake 和 Android NDK

c++ - 现代 C++ 中 std::bind 的替代方案

c++ - 通用初始化 - vector 的填充构造函数

c++ - 有没有一种好方法可以避免 C++ 中方法原型(prototype)的重复?

c++ - C++中的字符串操作

c++ - 我应该使用 Nuget 还是 Vcpkg 安装适用于 C++ 的 AWS 开发工具包?

c# - 通过 .Net Core 控制台应用程序从 Entity Framework Core 1.x 连接到 localdb

c++ - constexpr 静态成员什么时候不再是 constexpr?