C ++部分专业化(函数指针) [英] C++ Partial Specialization ( Function Pointers )
本文介绍了C ++部分专业化(函数指针)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
任何人都可以告诉下面是否合法的c ++吗?
Can any one please tell, whether below is legal c++ or not ?
template < typename s , s & (*fn) ( s * ) >
class c {};
//部分专业化
template < typename s , s & (*fn) ( s * ) >
class c < s*, s* & (*fn)(s**) {};
g ++(4.2.4)错误:函数调用 不能出现在常量表达式中 错误:模板参数2无效
g++ ( 4.2.4) error: a function call cannot appear in a constant-expression error: template argument 2 is invalid
尽管它确实适用于显式专业化
Although it does work for explicit specialization
int & func ( int * ) { return 0; }
template <> class c < int , func> class c {};
推荐答案
我想你的意思是
template < typename s , s & (*fn) ( s * ) >
class c {};
// partial specialization
template < typename s , s & (*fn) ( s * ) >
class c < s*, fn > {};
这篇关于C ++部分专业化(函数指针)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文