2
在C++ 14,假设我有一组的一种类型的模板的参数N
互斥布尔变量constexpr模板:使用类型谓词来执行重载解析?
template<typename T> constexpr bool P1 = ...;
template<typename T> constexpr bool P2 = ...;
.
.
.
template<typename T> constexpr bool PN = ...;
通过互斥我们的意思是,对于任何两个不同的整数i
和j
(在[1..N]
)和任何类型T,Pi<T> && Pj<T>
是错误的。
我希望定义一个重载函数集合中的一个参数的,由N
函数定义,使得与类型T的参数的函数调用表达式将选择ith
功能如果Pi<T>
为真,或将无法被编译,如果有没有这样的Pi
:
void f(T such that P1<T>) { defn1; }
void f(T such that P2<T>) { defn2; }
.
.
.
void f(T such that PN<T>) { defnN; }
什么是实现这个最简单的方法是什么?