我想要一个带有这个接口的功能。
func<Type1,CompileOption>( Type2 value)
//or
func<Type1>( Type2 value)
第一个编译时参数是一个类型。在每个函数调用中都需要它。
第二个编译时间参数是可选的。它用于修改func
.
函数本身以常规参数的类型 ( Type2
) 为模板。
这样的界面能建吗?
如果不能,有没有办法获得类似的行为?例如,类似于模板化函数的东西,它接受两个编译时参数,其中第二个是可选的?
天真的方法是行不通的。
// invalid syntax
template< typename Type1, typename CompileOption = Default, typename Type2>
void func( Type2 t2 );
// Does the wrong thing.
// CompileOption Parameter now change Type2.
template< typename Type1, typename Type2, typename CompileOption = Default>
void func( Type2 t2 );
//This kinda expresses what I'm looking for
template<typename Type2>
template<typename Type1, typename Optional = Default >
void func( Type2 t2 );