Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Can';t使C++;20需要布尔成员函数的概念_C++_C++20_C++ Concepts - Fatal编程技术网

C++ Can';t使C++;20需要布尔成员函数的概念

C++ Can';t使C++;20需要布尔成员函数的概念,c++,c++20,c++-concepts,C++,C++20,C++ Concepts,这个MCVE在Visual Studio(2019年,打开了C++20标志)和g++10(也设置了C++20选项)中都遇到了麻烦。每种情况下的投诉都是bool不是类型约束。(那么我应该键入什么来要求给定类型具有这样的成员函数呢?) #包括 模板 概念可测试=需要(T) { {t.foo()}->bool;//此处有错误:“应为概念”或 //“返回类型要求不是类型约束” }; 甲级 { 公众: bool foo()常量{return true;} }; 模板 void verify(const T

这个MCVE在Visual Studio(2019年,打开了C++20标志)和g++10(也设置了C++20选项)中都遇到了麻烦。每种情况下的投诉都是
bool
不是类型约束。(那么我应该键入什么来要求给定类型具有这样的成员函数呢?)

#包括
模板
概念可测试=需要(T)
{
{t.foo()}->bool;//此处有错误:“应为概念”或
//“返回类型要求不是类型约束”
};
甲级
{
公众:
bool foo()常量{return true;}
};
模板
void verify(const T&T){assert(T.foo());}
内部主(空)
{
A;核实(A);
返回0;
}

概念需要写成:

template <typename T>
concept testable = requires(T t)
{
    { t.foo() } -> std::convertible_to<bool>; 
};

你会怎么做?“看起来OP就是这么做的,但没有成功。”Swithwings添加了一个例子。
template <typename T>
concept testable = requires(T t)
{
    { t.foo() } -> std::convertible_to<bool>; 
};
template <typename T>
concept testable = requires(T t)
{
    { t.foo() } -> std::same_as<bool>; 
};