Следующий код не удается скомпилировать под г ++, со следующей ошибкой:Совпадений не найдено для шаблонной функции шаблона
«нет функции согласования для вызова„GetRecById (не Int &, NULL)“»:
template < typename T >
struct DummyLookup
{
static bool DoLookup(T& rec, const char* id)
{
rec = 123;
return true;
}
};
template < typename T,
template <class> class LookupPolicy
>
static bool GetRecById(T& rec, const char* id)
{
return LookupPolicy<T>::DoLookup(rec, id);
}
static void testLookup(void)
{
int rec = 0;
const bool ret = GetRecById< int, DummyLookup<int> >(rec, NULL);
std::cout << "rec = " << rec << std::endl; // should be 123
}
int main()
{
testLookup();
return 0;
}
Цель состоит в том, что GetRecById() поддерживает создание экземпляров с различными политиками запросов к записи, например для модульных испытаний.
Что я здесь делаю неправильно? FWIW, он компилируется под Sun Studio 10.
Заранее спасибо.