作为非类型模板 arg 的函数指针的语法变体
syntax variants for function pointer as non type template arg
我想使用函数指针作为非类型模板参数。我可以使用 typedef
或 using
的函数指针类型的预定义别名来实现。没有 预定义类型别名的模板定义 有任何语法吗?
bool func(int a, int b) { return a==b; }
//using FUNC_PTR_T = bool(*)(int,int); // OK
typedef bool(*FUNC_PTR_T)(int,int); // also OK
template < FUNC_PTR_T ptr >
void Check()
{
std::cout << ptr( 1,1 ) << std::endl;
}
int main()
{
Check<func>();
}
我想像这样一步写入:
// this syntax did not compile...
template < bool(*)(int,int) ptr >
void Check()
{
ptr(1,1);
}
谁能告诉我一个有效的语法?
您将声明一个非类型模板参数。你可以写
template < bool( *ptr )( int, int ) >
void Check()
{
ptr( 1, 1 );
}
我想使用函数指针作为非类型模板参数。我可以使用 typedef
或 using
的函数指针类型的预定义别名来实现。没有 预定义类型别名的模板定义 有任何语法吗?
bool func(int a, int b) { return a==b; }
//using FUNC_PTR_T = bool(*)(int,int); // OK
typedef bool(*FUNC_PTR_T)(int,int); // also OK
template < FUNC_PTR_T ptr >
void Check()
{
std::cout << ptr( 1,1 ) << std::endl;
}
int main()
{
Check<func>();
}
我想像这样一步写入:
// this syntax did not compile...
template < bool(*)(int,int) ptr >
void Check()
{
ptr(1,1);
}
谁能告诉我一个有效的语法?
您将声明一个非类型模板参数。你可以写
template < bool( *ptr )( int, int ) >
void Check()
{
ptr( 1, 1 );
}