enum ABC
{
A, B, C
}
enum XYZ
{
X, Y, Z
}
template<XYZ xyz>
void DoSomething ();
template<ABC abc, XYZ xyz>
void DoSomething ();
template<> void DoSomething <X>()
{ ... }
template<> void DoSomething <Y>()
{ ... }
template<> void DoSomething <Z>()
{ ... }
By switch i have done this
template<ABC abc, XYZ xyz>
void DoSomething ()
{
switch (xyz)
{
case X: ... break;
case Y: ... break;
case Z: ... break;
default: break;
}
}
但我想做这样的事情,为第二个参数的每个枚举值编写 3 个不同的函数并移除开关
template<> void Pos::DoSomething <ABC abc, X>()
{
...
}
template<> void Pos::DoSomething <ABC abc, Y>()
{
...
}
template<> void Pos::DoSomething <ABC abc, Z>()
{
...
}
这个怎么做 ???模板部分专业化功能?请帮我