Предположим, что существует класс Foo
, который я, как разработчик библиотеки, не хочу, чтобы мои пользователи могли создавать экземпляры более n
раз (где n
не обязательно 1
).Есть ли способ применить это правило во время компиляции ?
Обратите внимание, что я не придерживаюсь шаблона Singleton или аналогичным образом, поскольку я хотел бы, чтобы пользователи поняли, что им не следует создавать экземпляр класса, до выполнения их кода.
До сих пор моей лучшей попыткой была комбинация static_assert
и макроса __COUNTER__
, но безрезультатно, поскольку они, кажется, не оцениваются,как и следовало ожидать, внутри функций или классов.
constexpr int bar()
{
static_assert( __COUNTER__ < 5, "You called this too many times!");
return 0;
}