MSVC позволяет в качестве расширения специализировать функции-члены прямо в классе, однако это не стандарт.
Если вы хотите специализировать функции-члены, вы должны сделать это на уровне пространства имен.
// note: use "inline" so that the linker merges multiple definitions
template <class F>
template <>
inline void RDOFunCalcStd<F>::calc<1>(LPRDORuntime const& pRuntime)
{
m_value = m_pFunction(getParam<typename F::arg1_type>(pRuntime, 0));
}
Кроме того, FORCE_INLINE
немного ошибочно, inline
- подсказка, а не приказ компилятору, поэтому вы ничего не заставляете. И я не совсем понимаю смысл CREF
. Вы не помогаете себе использовать макросы для чего-либо, скорее наоборот.