gpt4 book ai didi

c++ - 一组类型的模板特化

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

如何为一组数据类型专门化模板?例如:

template<typename T>
inline T getRatio(T numer, T denom){
return (numer/denom);
}

我想专门针对一组数据类型,因此它只适用于 intlongdoublefloat 。因此,如果用户尝试将此函数与 char 类型一起使用,编译器将抛出错误。

最佳答案

这取决于你想做什么。如果您希望编译器无法为函数调用找到合适的解决方案,您可以使用 Flinsch 的答案,这可能是最好的,或者您可以使用 SFINAE:

template < typename T > is_an_ok_type : boost::mpl::false_ {};
template < > is_an_ok_type<int> : boost::mpl::true_ {};
... etc...

template < typename T >
typename boost::enable_if< is_an_ok_type<T>,T >::type
get_ratio(T t1, T t2)
{
return t1/t2;
}

如果你想要某种合理可读的错误,而不是使用静态断言; static_assert (C++0x) 或 BOOST_STATIC_ASSERT。

关于c++ - 一组类型的模板特化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349014/

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