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

C++ Visual studio 2019 c++;支持概念-编译成功但有错误:为什么?,c++,visual-studio,c++-concepts,C++,Visual Studio,C++ Concepts,我已经安装了最新版本的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 D

我已经安装了最新版本的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;
}

但是,VisualStudio社区C++ +.5.0给出了1错误(即使完成编译):

标识符“概念”未定义

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


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

您描述的是一个来自Intellisense的错误,该引擎在您键入代码时会在代码编辑器中显示红色曲线(并在开发时填充“实时”错误列表)

虽然这是在编译代码,但实际上它使用的引擎与实际构建项目并生成可执行文件的引擎不同

据介绍,它还不是最新的(对于一个全新的功能来说,这并不离谱):

IntelliSense支持当前不可用


忽略。

你所说的“给出1个错误”是什么意思?是什么给了你错误?编译器?在下面的错误列表中,我没有使用过接受这种现代技术的编译器。但是,有一个例子,它们包括
#include
。可能是这样吗?@willem:下面的错误列表是什么?所以在VisualStudio屏幕上,编译时会有一个错误列表。这就产生了这个错误,这很有道理。我编译它没有任何问题,但我确实在编辑器中标出了
概念
关键字。不幸的是,这种事情我们不得不忍受。
not available
BAM!