В настоящее время я пытаюсь получить следующий код для компиляции.Сначала файл заголовка, содержащий класс с шаблоном метода:
// ConfigurationContext.h
class ConfigurationContext
{
public:
template<typename T> T getValue(const std::string& name, T& default) const
{
...
}
}
Где-то еще я хочу вызвать этот метод так:
int value = context.getValue<int>("foo", 5);
Там я получаю следующую ошибку:
error: no matching function for call to 'ConfigurationContext::getValue(const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, int)'
Я проверил очевидные ошибки, такие как отсутствие включений и тому подобное.Но все вроде бы правильно.Я попытался удалить передачу по ссылке аргумента типа шаблона следующим образом:
template<typename T> T getValue(const std::string& name, T default) const ...
Затем он компилируется без каких-либо ошибок и также работает нормально, но я все же хотел бы передать ссылку здесь...
Кто-нибудь знает, что здесь происходит и как заставить это работать?