相关疑难解决方法(0)

匹配多种类型的模板特化解决方案

简单地驳回正常函数重载将更好地服务于此示例的事实.它仅作为学习模板编程的一种方式.话虽如此,欢迎您评论使用函数重载所带来的好处/差异,与功能模板专业化相比(尽管这可能值得一提.)


请考虑以下示例:

template <typename T>
inline void ToString(T value, char* target, size_t max_size );

template <>
inline void ToString<float>(float value, char* target, size_t max_size)
{
   snprintf( target , max_size , "%f" , value);
}

template <>
inline void ToString<double>(double value, char* target, size_t max_size)
{
    snprintf( target , max_size , "%f" , value);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法只编写其中一个匹配两者floatdouble类型的特化?

基本上我设想为模板类型编写一个模板特化,它将匹配两者floatdouble(作为'float或double'类型的匹配器),但我不确定这是否可能与C++一起使用.也就是说,我之前看到过意想不到的模板魔法发生在我眼前,所以我认为这是一个很好的问题.

c++ templates metaprogramming c++11

11
推荐指数
1
解决办法
3097
查看次数

多种类型的模板专业化

标题有点含糊不清.

可以说我有一个模板定义为:

template < typename T >
void foo ( int x ) ;
template <>
void foo<char> ( int x ) ;
template <>
void foo<unsigned char> ( int x ) ;
template <>
void foo<short> ( int x ) ;
...
Run Code Online (Sandbox Code Playgroud)

内部都foo<signed>()foo<unsigned>()做同样的事情.唯一的要求是T8位类型.

我可以通过创建另一个模板来定义基于大小的标准类型.

template < typename T, size_t N = sizeof( T ) > struct remap ;
template < typename T, size_t > struct remap< 1 >
{
    typedef unsigned char value; …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++03

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

templates ×2

c++03 ×1

c++11 ×1

metaprogramming ×1