【发布时间】:2013-01-16 13:26:57
【问题描述】:
我正在使用 VS 2008(抱歉,无法更新)。我的列表类需要模板专业化。我要专门化的参数是一个成员函数指针。
简而言之,我怎样才能使以下代码工作(我不能使用可变参数模板):
// two or three args
template <typename T1, typename T2, void (T1::* FUNC)(const T2&) = 0> struct list;
// specialized code for 2 args.
template <typename T1, typename T2> struct list<T1, T2> { };
错误信息是:
C2754: 'specialization' : 部分特化不能有依赖的非类型模板参数
也许我的问题没有解决方案。但这也是一个答案。
提前感谢您的帮助。
【问题讨论】:
-
这可能是您将使用委托的实例之一。 msdn.microsoft.com/en-us/library/213x8e7w%28v=vs.90%29.aspx
-
为什么需要这种专业化?主模板有一个默认参数,这意味着您可以省略它。你想达到什么目标?
-
如果成员函数指针为空,我必须实现一个完全不同的列表类。并希望将这两个实现分开以获得干净的代码(没有 if ... else)。
-
@Tebc 我不想将它与 c# 混合使用,因为代码也需要在 linux 下运行并且应该是原生 c++。对不起。
标签: c++ templates visual-c++