是否可以在编译时限制 class 的实例数?

Is it possible to limit the number of instances of a class at compile time?

假设有一个 class Foo 作为库的设计者,我不希望我的用户能够实例化超过 n 次(其中 n 不一定是 1)。 有什么方法可以在编译期间强制执行此规则

请注意,我不是在追求单例模式或类似模式,因为我希望用户意识到他们不应该在执行 class、 之前实例化 代码。

到目前为止,我最好的尝试是组合使用 static_assert__COUNTER__ 宏,但无济于事,因为它们似乎没有像我期望的那样在函数内部或classes.

constexpr int bar()
{
    static_assert( __COUNTER__ < 5, "You called this too many times!");
    return 0;
}

没有。即使撇开创建单个实例的单个函数可以被多次调用,或者实例化可能发生在循环或模板中这一事实不谈,没有什么可以阻止实例化发生在另一个 翻译单元 中.