Falta la lista de argumentos para la plantilla de clase

Tengo un problema curioso, y no estoy muy seguro de cuál es el problema. Estoy creando una clase llamada LinkedArrayList que usa una plantilla de nombre de tipo, como se muestra en el siguiente código:

#pragma once

template <typename ItemType>

class LinkedArrayList 
{

private:

class Node {
    ItemType* items;
    Node* next;
    Node* prev;
    int capacity;
    int size;
};

Node* head;
Node* tail;
int size;

public:

void insert (int index, const ItemType& item);
ItemType remove (int index);
int find (const ItemType& item);
};

Ahora, esto no da ningún error o problema. Sin embargo, crear las funciones en el archivo .cpp me da el error "Falta la lista de argumentos para la plantilla de clase 'LinkedArrayList'". También dice que ItemType no está definido. Aquí está el código, muy simple, en el .cpp:

#include "LinkedArrayList.h"

void LinkedArrayList::insert (int index, const ItemType& item)
{}

ItemType LinkedArrayList::remove (int index)
{return ItemType();}

int find (const ItemType& item)
{return -1;}

Parece que tiene algo que ver con la plantilla, porque si la comento y cambio los Ítems en las funciones a ints, no da ningún error. Además, si solo hago todo el código en el .h en lugar de tener un .cpp separado, también funciona bien.

Cualquier ayuda en la fuente del problema sería muy apreciada.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta