C++模板:查询哪个更好的使用方式和原因

Phi*_*ixz 2 c++ templates

我有一个问题.这样做更好.

typedef enum{
  One = 1,
  Two = 2
} Number;

template< typename T, Number num >
void foo( const T& param )
{
}

or 

template< typename T >
void foo( const T& param, Number num )
{
}
Run Code Online (Sandbox Code Playgroud)

基本上我在寻找的是,这两种方法有何不同?如果我必须使用其中任何一个我应该选择哪个以及为什么?

Ant*_*ams 10

这真的取决于你想做什么.如果num值是模板参数,则必须在编译时指定它.如果它是一个函数参数,则可以在运行时指定它.

你的用例是什么?