以下代码可编译良好的MSVC,但在构建GCC时会出现很多错误:

#define FORCE_INLINE inline
#define CREF(A) const A&

template <class F>
class RDOFunCalcStd: public RDOFunCalc
{
...
template <class T>
FORCE_INLINE T getParam(CREF(LPRDORuntime) pRuntime, ruint paramNumber);

template <>
FORCE_INLINE double getParam<double>(CREF(LPRDORuntime) pRuntime, ruint paramNumber)
{
    return pRuntime->getFuncArgument(paramNumber).getDouble();
}

template <>
FORCE_INLINE int getParam<int>(CREF(LPRDORuntime) pRuntime, ruint paramNumber)
{
    return pRuntime->getFuncArgument(paramNumber).getInt();
}
...
};
错误列表:

应该怎么做才能解决该错误?

最佳答案

看到这个

Article from Herb Sutter

它解释了原因。简而言之,C++不支持功能模板特化。

09-25 15:05