I have a class that reads a file and stores the values found in a map, in memory. I'v declared a member function using templates, so that I can extract any value from a string.
ConfigReader.h
class ConfigReader
{
    private:
        More Code...
    public:
        ...
        template<typename vType>
        vType GetValue(const char * key);
};
ConfigReader.cpp
...
template<typename vType>
vType ConfigReader::GetValue(const char * key)
{
    stringstream buffer(GetStringValue(key));
    vType extrValue;
    buffer >> extrValue;
    if(!buffer)
        throw invalid_argument("Failed to extract the value!");
    return extrValue;
}
Main.cpp
int main()
{
    ...
    try{
        cout << "Encryption: " << boolalpha << config.GetValue<bool>("use_enc") << endl;
    }catch(invalid_argument err){
        cerr << "Error: " << err.what() << endl;
    }
}
I get the following link error:
1>Main.obj : error LNK2019: unresolved external symbol "public: bool __thiscall ConfigReader::GetValue<bool>(char const *)" (??$GetValue@_N@ConfigReader@@QAE_NPBD@Z) referenced in function _main
1>..\Visual Studio 2017\Projects\...\Debug\FilePhraser.exe : fatal error LNK1120: 1 unresolved externals
Wich means that the function GetValue<bool>() hasn't been found. 
Could you please explain me why the linker can't find that function ?
 
    