This definition:
template < typename T >
concept bool C_Object() {
return requires {
T();
};
}
defines C_Objectas a concept of function. It:
template < typename Object >
requires C_Object<Object>
class Foo {
public:
Object test;
};
uses C_Objectas if it were the concept of a variable. In the require condition, you must use ()to call functions:
template < typename Object >
requires C_Object<Object>()
class Foo {
public:
Object test;
};
"terse" placeholder Object, :
template < C_Object Object >
class Foo {
public:
Object test;
};