否定概念 (C++20)

non*_*741 7 c++ c++-concepts c++20

玩了一下,我注意到以下代码在 MSVC 19.27 上编译

template <typename T>
concept defined = true;

template <!defined T>             // <=== !!!!!!!!
inline auto constexpr Get()
{
    return 5;  
}
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?允许这种语法是一个坏主意吗?

Nic*_*las 4

不可以,当概念用作占位符或简洁模板语法的一部分时,您不能将运算符应用于概念。如果您需要这样做,那么您需要创建一个新概念或用子句将其详细拼写出来requires