Вам действительно нужно передать экземпляр nullObject как часть шаблона? Не могли бы вы сделать это через конструктор?
Следующие компиляции с использованием g ++
#include <string>
template <class object_t, long size>
class lf_deque
{
public:
lf_deque(const object_t& nullObject){
//...
};
protected:
lf_deque(){
// ...
};
};
int main(){
lf_deque<int,10> intDeque(0);
lf_deque<std::string,10> myStringDeque("");
int myInt = 4;
lf_deque<int*,10> intPtrDeque(&myInt);
lf_deque<int*,10> intPtrDequeZero(0);
return 0;
}
Если это невозможно, возможно, вместо этого вы можете сохранить значение как статический член.
#include <string>
template <class object_t, long size>
class lf_deque
{
public:
lf_deque(){
//..
}
static object_t nullObject;
};
template<class object_t, long size> object_t lf_deque<object_t,size>::nullObject;
int main(){
lf_deque<int,10>::nullObject = 0;
lf_deque<int,10> intDeque;
lf_deque<int*,10>::nullObject = 0;
lf_deque<int*,10> intPtrDeque;
return 0;
}