У меня есть класс шаблона, который я пытаюсь явно экземпляр:C++ явного шаблона конкретизация оператора
template<T>
struct tmat2x3
{
...
typedef tvec3<T> col_type;
..
};
оператор объявляются следующим образом:
template <typename T>
typename tmat2x3<T>::row_type operator* (tmat2x4<T> const & m, typename tmat2x3<T>::col_type const & v);
Я явно инстанцирование оператора используя следующее:
template tmat2x3<unsigned char>::row_type operator * (tmat2x3<unsigned char> const &m, tmat2x3<unsigned char>::col_type const &s);
gcc дает мне следующую ошибку, однако:
../glm/glm_core.cpp: In instantiation of ‘typename glm::detail::tmat2x3<T>::row_type glm::detail::operator*(const glm::detail::tmat2x3<T>&, const typename glm::detail::tmat2x3<T>::col_type&) [with T = unsigned char]’:
../glm/glm_core.cpp:443: instantiated from here
../glm/glm_core.cpp:443: error: explicit instantiation of ‘typename glm::detail::tmat2x3<T>::row_type glm::detail::operator*(const glm::detail::tmat2x3<T>&, const typename glm::detail::tmat2x3<T>::col_type&) [with T = unsigned char]’ but no definition available
Любая идея о том, что я делаю неправильно?
Заранее спасибо
Есть ли у вас тело от оператора, доступного при явном создании экземпляра? – Anycorn
Вы показали нам объявление, но компилятор жалуется на определение. Как вы определяете шаблон? – Potatoswatter