假设有一个类Foo
,作为库的设计者,我不希望我的用户能够实例化n
多次(n
不一定1
)。有没有办法在编译期间强制执行此规则?
请注意,我不是在追求单例模式或类似的模式,因为我希望用户在执行他们的代码之前意识到他们不应该实例化该类。
到目前为止,我最好的尝试是static_assert
和__COUNTER__
宏的组合,但无济于事,因为它们似乎没有像我所期望的那样在函数或类内部进行评估。
constexpr int bar()
{
static_assert( __COUNTER__ < 5, "You called this too many times!");
return 0;
}