具有多种模板类型的 C++ 模板函数显式特化
C++ template function explicit specialization with multiple template types
我想用两种模板类型编写一个模板化函数:一种是 bool,一种是类型名,我想专注于类型名。
例如,这就是我想要的,但专门针对 T 的几种类型:
template<bool b, typename T>
void foo(T val)
{
// do different stuff based on b and type of T.
}
没有布尔值,我可以这样做:
template<typename T>
void bar(T val) {
static_assert(false, "not implemented");
}
template<>
void bar<short>(short val) {
printf("it's a short!\n");
}
我搞不懂这个的语法,microsoft docs on specialization 只涵盖单一类型的情况。
template<bool B, typename T>
void foo(T const&)
{
static_assert(false, "not implemented");
}
template<bool B>
void foo(short)
{
printf("it's a short!\n");
}
然而,这并不是真正的特化,而是重载,这是完全合适的。事实上,你可以忽略一般情况。
我想用两种模板类型编写一个模板化函数:一种是 bool,一种是类型名,我想专注于类型名。
例如,这就是我想要的,但专门针对 T 的几种类型:
template<bool b, typename T>
void foo(T val)
{
// do different stuff based on b and type of T.
}
没有布尔值,我可以这样做:
template<typename T>
void bar(T val) {
static_assert(false, "not implemented");
}
template<>
void bar<short>(short val) {
printf("it's a short!\n");
}
我搞不懂这个的语法,microsoft docs on specialization 只涵盖单一类型的情况。
template<bool B, typename T>
void foo(T const&)
{
static_assert(false, "not implemented");
}
template<bool B>
void foo(short)
{
printf("it's a short!\n");
}
然而,这并不是真正的特化,而是重载,这是完全合适的。事实上,你可以忽略一般情况。