我试图在编译时推断出两个模板参数中的较大者。两个模板参数的类型均为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/

10-10 21:27