Visual studio 2019 c++对概念的支持-编译成功但有错误:为什么



我安装了最新版本的visualstudio来测试概念。我尝试例如:

struct One{};
struct Two{
std::string ToString() const
{
return "BAM!";
}
};
template<typename T>
concept hasToString = requires(T t) { t.ToString(); };
template <class T>
void DoString(T& t)
{
if constexpr (hasToString<T>)
{
std::cout << t.ToString() << std::endl;
}
else
{
std::cout << "not available" << std::endl;
}
}
int main(int argc, char** argv)
{
One one{};
Two two{};
DoString(one);
DoString(two);
return 0;
}

这将编译(使用/std::c++最新版本(,并给出我期望的输出:

not available
BAM!

然而,visualstudio社区c++16.5.0给出了一个错误(即使它完成了编译(:

标识符"概念"未定义

我不知道为什么?根据下面的帖子,概念应该得到支持。

https://devblogs.microsoft.com/cppblog/c20-concepts-are-here-in-visual-studio-2019-version-16-3/

那么我是不是做错了什么?什么或者是这个错误,如果是,有没有办法在MS修复错误之前抑制错误?

您正在描述一个来自Intellisense的错误,该引擎在您键入代码时在代码编辑器中显示红色波浪线(并在您开发时填充"实时"错误列表(。

尽管这是在编译你的代码,但它实际上使用了一个不同于实际构建你的项目和生成可执行文件的引擎。

根据你链接到的功能公告,它还不是最新的(对于一个全新的功能来说并不离谱(:

IntelliSense支持目前不可用

忽略。

最新更新