В C++ есть несколько широко используемых базовых классов нулевого размера, используемых для «маркировки» подклассов, например boost::noncopyable.
Есть ли какой-нибудь класс, который используется для обозначения невозможности создания экземпляра класса, например «статический класс» в C# или Java?
Прежде чем вы скажете мне, мне следует использовать для этого пространство имен: my у класса есть аргументы шаблона, а у пространств имен нет.
Если нет принятого «тега», существует ли шаблон, который компилятор может использовать для распознавания шаблона статического класса и выдачи предупреждений в случае случайного создания нестатического члена?
template
struct X
{
~X() = delete;
static int N; // I don't need this but static data members are typically allowed for static classes
int x; // warning please!
static bool f(typename my_trait::f_arg arg); // ok
bool g(); // warning please!
};
Подробнее здесь: https://stackoverflow.com/questions/797 ... ic-classes