Я пытаюсь явно создать экземпляр шаблонной функции типа U внутри шаблонного класса типа T. Мой код ниже генерирует предупреждение, и компоновщик не находит явное создание экземпляра ReinterpretAs()
. Может кто-нибудь заметить ошибку или посоветовать, как это сделать? Я использую VC ++ 2010.
template<typename T>
class Matrix
{
public:
template<typename U> Matrix<U> ReinterpretAs() const;
};
template<typename T>
template<typename U>
Matrix<U> Matrix<T>::ReinterpretAs() const
{
Matrix<U> m;
// ...
return m;
}
// Explicit instantiation.
template class Matrix<int>;
template class Matrix<float>;
template Matrix<float> Matrix<int>::ReinterpretAs<float>();
template Matrix<int> Matrix<float>::ReinterpretAs<int>();
Последние две строки выше дают предупреждение компилятору:
warning #536: no instance of function template "Matrix<T>::ReinterpretAs
[with T=float]" matches the specified type
Заранее спасибо, Марк