From: Mark Rodgers (mark.rodgers_at_[hidden])
Date: 2000-05-25 14:36:03


From: David Abrahams <abrahams_at_[hidden]>
> In my neck of the woods we call that class "namespace" ;)
> Seriously, why not use a namespace?

Of course namespaces suffer the problem that you can't use them as
template parameters, so if I want to write

  template <typename T>
  int foo() { T::bar(); }

Then I can't write

  namespace fred { void bar(){} }
  foo<fred>();

But I could write

  struct fred : private noninstantiable { static void bar(){} };
  foo<fred>();

Perhaps it should be a guideline that one should prefer classes
with static members over namespaces when possible???

However, I find it hard to imagine what harm would come from
instantiating fred above, so wonder why we need to take the
trouble to prevent it.

Mark