我试图在编译时推断出两个模板参数中的较大者。两个模板参数的类型均为size_t。
我有一个模板化类型SomeType,它使用size_t作为模板参数。然后,我有一个函数,该函数接受具有不同模板size_t的两个SomeType参数,并且我希望返回类型为其模板化size_t大于两个输入size_t大小中的较大者。
template <size_t d> struct SomeType {...}
template<size_t d1, size_t d2>
SomeType<the_larger_of_d1_and_d2> Func(SomeType<d1> A, SomeType<d2> B)
{
...
}
这可能吗?
最佳答案
您可以直接计算类型,而无需SFINAE:
template<size_t d1, size_t d2>
SomeType<(d1 > d2 ? d1 : d2)> Func(SomeType<d1> A, SomeType<d2> B)
{
…
}
关于c++ - 编译时的模板参数计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21711433/