Is one or the other of these right or wrong?
Code:
template<int MAX>
class B
public:
     B();
};

B<MAX>::B() { ... }
or

Code:
template<int MAX>
class B
public:
     B();
};

B<MAX>::B<MAX>() { ... }
(Note the use of template parameter in the definition of the constructor.)