【发布时间】:2011-04-28 21:10:32
【问题描述】:
尝试使用参数所在的模板
template<class T, boost::function<long (T*)> &f>
static long myFunc(const vector<boost::shared_ptr<T>> &inputVector)
{ // do stuff}
这是我打的电话
long i = myFunc<MyClass, boost::bind(&MyClass::myClassFunc, _1)>(myInputVector);
函数的签名在哪里
long myClassFunc() const { return m_value; }
得到以下编译器错误:
错误 C2975:“f”:“myFunc”的模板参数无效,预期的编译时常量表达式
编译需要什么?
【问题讨论】:
-
你到底想做什么?您既没有传递 MyClass 的任何实例,也没有 myClassFunc 将 T* 作为参数,无论模板参数有什么问题,这段代码都没有任何意义。