【发布时间】:2020-07-26 08:52:51
【问题描述】:
是否可以将概念作为模板参数传递?例如:
我想做这样的事情:
template <typename t, typename u> concept range_of =
range<t> &&
requires (t a) {
{*a.begin()} -> std::same_as<u &>;
};
但我不想给出确切的类型u,而是想给它一个概念:
template <typename t, {{concept u}}> concept constrained_range =
range<t> &&
requires (t a) {
{*a.begin()} -> u;
};
【问题讨论】:
-
我认为不会,也感觉可能导致罗素悖论的再次出现:P
-
你不能传递一个概念,但是你可以传递一个模板参数被约束的模板,或者一个带有成员函数模板约束参数类型的结构体。
标签: c++ c++-concepts