2016-05-05 2 views
-5

Привет Я реализую специализированную специализацию с C++, где мне бы хотелось, чтобы функция foo что-то делала, если типы ввода (и вывода) являются float и double, но хотели бы, чтобы foo действовал по-разному для int.C++ template specialization

Кажется, я что-то делаю неправильно. Можете ли вы предоставить мне несколько указателей? Огромное спасибо!

template <typename typeA, typename typeB> 
typeA foo(const typeB *pt) { 
    // do something; 
} 

template float foo<float, float>(const float *pt); 
template double foo<double, double>(const double *pt); 

template<> 
int foo(const int *pt) { 
    // do something different for int; 
} 
+0

какое сообщение об ошибке вы получаете? – user463035818

+0

Каковы две строки кода, которые должны быть полезны? – user463035818

ответ

0

Так что мне не хватало <int, int>. полный код:

template <typename typeA, typename typeB> 
typeA foo(const typeB *pt) { 
    // do something; 
} 

template float foo<float, float>(const float *pt); 
template double foo<double, double>(const double *pt); 

template<> 
int foo<int, int>(const int *pt) { 
    // do something different for int; 
}