Как уже указывалось в комментариях выше, невозможно переслать объявление только одной функции-члена класса.Если то, что вы на самом деле ищете, это способ определения вашей функции-члена вне класса:
template <typename Type, typename IDType = typename Type::IDType>
class Mappings;
template <typename Type, typename IDType>
class Mappings
{
public:
Type valueFor(const IDType& id);
};
template <typename Type, typename IDType>
Type Mappings<Type, IDType>::valueFor(const IDType& id)
{
return {};
}
живой пример здесь
Обратите внимание, что имя классаперед ::
необходимо включить аргументы шаблона.В определении функции-члена вне определения класса имя должно содержать имя класса [class.mfct] / 4 , за которым следует ::
.Mappings
- это имя шаблона класса, а не имя класса.Хотя внутри определения шаблона класса имя шаблона может использоваться как синоним имени класса [temp.local] / 1 , мы не находимся внутри определения какого-либо шаблона вТочка, где вводится определение этой функции-члена.Таким образом, вам нужно использовать правильное имя класса там ...