我希望有一组函数可以接受任何uintX_t
变体,而无需复制/粘贴大量代码。到目前为止,我正试图使用“标记”来确定要调用的函数。由于显而易见的原因,T = unsigned
不起作用,因为我可能有uint32_t
,uint16_t
等用于显式功能专业化的默认模板参数
struct number_tag {};
struct hexadecimal : number_tag {};
struct number : number_tag {};
template <typename T = unsigned, typename Tag>
void write(T t);
再后来在.cpp文件:
template <>
void write<unsigned, hexadecimal>(unsigned num)
{
}
template <>
void write<unsigned, number>(unsigned num)
{
}
,理想我想这样称呼它:
write<number>(10);
write("\n");
write<hexadecimal>(0xFF);
如何我写这篇文章,这样我就不用做write<unsigned, number>
和创建一批专业化的每一个uintX_t
变种?
注意这样的代码'写 (10);'暗示'number'是* first *模板参数,这就是为什么两个答案都颠倒了模板参数的顺序。 –
aschepler
2014-09-13 12:45:05