Erro de referência indefinido para o método de modelo [duplicado]

Esta questão já tem uma resposta aqui:

Por que os modelos só podem ser implementados no arquivo de cabeçalho? 15 respostas

Isso tem me deixado louco pela última hora e meia. Eu sei que é uma coisa pequena, mas não consigo encontrar o que está errado (o fato de que é uma tarde de sexta-feira chuvosa, é claro, não ajuda).

Eu defini a seguinte classe que manterá parâmetros de configuração lidos de um arquivo e me permitirá acessá-los do meu programa:

class VAConfig {
    friend std::ostream& operator<<( std::ostream& lhs, const VAConfig& rhs);

private:
    VAConfig();
    static std::string      configFilename;
    static VAConfig*        pConfigInstance;
    static TiXmlDocument*   pXmlDoc;
    std::map<std::string, std::string> valueHash;

public:
    static VAConfig* getInstance();
    static void setConfigFileName( std::string& filename ) { configFilename = filename; }
    virtual ~VAConfig();

    void readParameterSet( std::string parameterGroupName );
    template<typename T> T readParameter( const std::string parameterName );
    template<typename T> T convert( const std::string& value );
};

onde o métodoconvert() é definido emVAConfig.cpp Como

template <typename T>
T VAConfig::convert( const std::string& value )
{
    T t;
    std::istringstream iss( value, std::istringstream::in );
    iss >> t;
    return t;
}

Tudo bem simples. Mas quando eu testo do meu programa principal usando

int y = parameters->convert<int>("5");

Eu recebo umundefined reference to 'int VAConfig::convert<int>...' Erro de compilação. Idem parareadParameter().

Analisamos muitos tutoriais de modelos, mas não podemos descobrir isso. Alguma ideia?

questionAnswers(3)

yourAnswerToTheQuestion