Вынос метода шаблонного класса за класс
Есть класс:
#pragma once
#include <memory>
template <
typename T,
template < typename Y> class Allocator = std::allocator
>
class mVector
{
public:
mVector();
};
visual studio предлагает создать реализацию конструктора за пределами класса в этом же файле:
template<typename T, class Allocator<typename Y>>
inline mVector<T, Allocator<Y>>::mVector()
{
}
И сама же потом отказывается запускать:

А если реализацию делать внутри класса, то всё ок
Ответы (1 шт):
Автор решения: Вова
→ Ссылка
Вы хотите реализовать вектор? Если да, то не совсем понятно для чего вам шаблонный аргумент Y, который передаётся в шаблон аллокатора, и, думаю, такой код более уместен:
template<class T, class Allocator = std::allocator<T>>
class mVector {
public:
mVector();
};
template<class T, class Allocator>
mVector<T, Allocator>::mVector() {
}
Так и не допёр зачем вам такие шаблонные параметры, но если с ними, то так будет компилироваться и работать:
template<class T, template <class Y> class Allocator = std::allocator>
class mVector {
public:
mVector();
};
template<class T, template <class Y> class Allocator>
mVector<T, Allocator>::mVector() {
}