On Nov 8, 11:34 pm, Ian Collins <ian-n...@hotmail.com> wrote:
er wrote:
hi,
could someone please help with this code?
template<unsigned int N,unsigned int M>
class A{
public:
A();
};
template<unsigned int N,unsigned int M>
A<N,M>::A(){};//fine
//intended: partial specialization
template<unsigned int N>
A<N,0>::A(){};//not fine//see compiler error below
You can't specialise a member of a class template, you have to
specialise the class template:
template<unsigned int N>
class A<N,0>
{
public:
A();
};
template<unsigned int N>
A<N,0>::A(){};
--
Ian Collins.
following up with this: what i'd like to implement is a recursion, but
as below it does not work...
template<unsigned int M>
class A{
public:
static A<M>& instance();
private:
A();};
template<unsigned int M>
A<M>& A<M>::instance(){
static A<M> singleton;
return singleton;};
template<unsigned int M>
A<M>::A(){};//WITHOUT RECURSION. FINE
//A<M>::A(){A<M-1>& ref = A<M-1>::instance();};//RECURSION. NOT FINE.
template<>
class A<0>{
public:
static A<0>& instance(){
static A<0> singleton;
return singleton;
};
private:
A(){};
};
../header.hpp: In constructor 'A<M>::A() [with unsigned int M = 1u]':
../header.hpp:15: instantiated from 'static A<M>& A<M>::instance()
[with unsigned int M = 1u]'
../main.cpp:5: instantiated from here
template. still, any help welcomed.