【发布时间】:2020-05-09 05:26:34
【问题描述】:
我有一个概念concept_a 和第二个概念concept_ab 有更多要求,例如
template<typename T> concept concept_a = ...;
template<typename T> concept concept_b = ...;
template<typename T> concept concept_ab = concept_a<T> && concept_b<T>;
现在我有一些函数f 用于这些概念。在更严格概念的函数中,我想为不太严格的概念重用该函数:
int f(concept_a auto a) {return 1;}
int f(concept_ab auto ab)
{
int n =f<concept_a> (ab);
return n+10;
}
但是,这不起作用,因为f<concept_a> 在语法上无效。当然,我可以通过添加另一个间接级别来解决这个问题,(即添加一个函数f_concept_a,它被f 调用)。我的问题是:是否有直接的方法来调用不同(但相关)概念的函数?
【问题讨论】:
-
是的,这是一个类似的问题,具有相同的简短答案(没有直接的方法),但答案很长(可能的替代解决方案)
标签: c++ c++20 c++-concepts