想象两个类StaticFoo
和NonStaticFoo
,相同,但类成员在StaticFoo
中是静态的,但在NonStaticFoo
中不是}。
简单的例子:
class StaticFoo {
static void bar();
static int v;
};
class NonStaticFoo {
void bar();
int v;
};
是否可以将模板类Foo
分解出来以避免代码重复?
那么就可以使用像
using StaticFoo = Foo<true>;
using NonStaticFoo = Foo<false>;
答案 0 :(得分:2)
是否可以将模板类Foo分解出来以避免代码重复?
“否”
不幸的是static
没有被noexcept
这样的表达式参数化,所以你不能说static(false)
之类的内容。
如果不使用宏,您将被迫专门化一个模板,以便您可以在专业化中拥有static
个成员:
template<bool = false>
class Foo{
void bar();
int v;
};
template<>
class Foo<true>{
static void bar();
static int v;
};