【发布时间】: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 功能。
-
MSVS 2017 功能列表:blogs.msdn.microsoft.com/vcblog/2017/05/10/…
-
Comparison
fileName != nullptr无论如何都是错误的。您是否暗示fileName实际上是char const *?在这种情况下,您可以使用_In_z_SAL 注释。 -
是的,你也可以通过
std::string const & fileName来避免不必要的临时字符串对象的创建。