Suppose I want to define a class Foo which has a member variable that is also a template Bar<int num> baz. Also suppose that I always want num to be some particular value (say 5) for baz as defined in Foo. Then presumably I could accomplish this as follows:
class Foo
{
private:
    Bar<5> baz;
};
However, this would be introducing a magic number which is typically not good programming practice. I have considered defining a constant in the class definition a la const int num = 5;, but that would create an extra integer for every instance of Foo, which is not ideal if I have lots of instances. I have also considered defining a constant variable outside the class definition but in the header file. This has the advantage of being seen in the .cpp file, but pollutes the global name space.
My question is, what is the most stylistically appropriate way to accomplish this goal? Ideally there would be some variable which is only visible to the header and .cpp file, and which can be used in the template call.
 
    