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



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

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

到目前为止,我最好的尝试是将static_assert__COUNTER__宏组合在一起,但无济于事,因为它们似乎没有像我预期的那样在函数或类中被评估。

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

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

相关内容

  • 没有找到相关文章

最新更新