【问题标题】:Does VisualStudio 2017 already support C++17 code contracts?VisualStudio 2017 是否已经支持 C++17 代码契约?
【发布时间】:2017-06-12 13:01:27
【问题描述】:

有人知道 VS2017 是否已经支持代码合同,如C++17 code contracts 所示?

当我尝试使用它们时

explicit IniHandler(std::string fileName) [[expects: fileName != nullptr]]
{
    this->fileName = fileName;
}

它似乎不起作用。

我正在使用命令行选项/std:c++latest,但我仍然收到警告 “需要标识符”。

任何帮助都将不胜感激:)

【问题讨论】:

  • 我不认为它是 C++17 的一部分
  • 甚至没有为 C++17 安排合同,即使有,Visual Studio 2017 也没有完整实现所有 C++17 功能。
  • Comparison fileName != nullptr 无论如何都是错误的。您是否暗示fileName 实际上是char const *?在这种情况下,您可以使用 _In_z_ SAL 注释。
  • 是的,你也可以通过std::string const & fileName来避免不必要的临时字符串对象的创建。

标签: c++ assert c++17 contract


【解决方案1】:

合同不是 C++17 的一部分,AFAIK 甚至没有可用的 TS(技术规范)。最新的合约论文是P0542R0

无论如何,您可以在 cmets 中找到 all available C++17 features hereNathanOliver

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 2023-03-08
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    相关资源
    最近更新 更多