gpt4 book ai didi

数字类型的 C++ 模板

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:30 32 4
gpt4 key购买 nike

我想要一个模板来选择数字类型,但我也想要一个全局类型模板。我尝试将解决方案应用于 this问题,但没有用:

template<typename T, typename ... Types>
void myFct(T arg1, Types ... rest) { /*do stuff*/ }

template<typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type,
typename ... Types>
void myFct(T arg1, Types ... rest) { /* do stuff */ }

因为现在我有两个具有相同 header 的函数。执行以下操作的正确方法是什么:

template<typename T, typename ... Types>
void myFct(T arg1, Types ... rest)
{
if (isNumeric(T))
doNumericStuff();
else
doStuff();
}

最佳答案

可能有更好的方法来做到这一点,但对我来说最简单的方法是将 enable_if 添加到返回类型上:

template<typename T, typename ... Types>
typename std::enable_if<
std::is_arithmetic<T>::value
>::type
myFct(T arg1, Types ... rest) { /*do numeric stuff*/ }

template<typename T, typename ... Types>
typename std::enable_if<
!std::is_arithmetic<T>::value
>::type
myFct(T arg1, Types ... rest) { /*do non-numeric stuff*/ }

一旦您有两个以上相互排斥的选项,这将变得非常笨拙,但这肯定会奏效。

关于数字类型的 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30380406/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com