假设我有以下示例:
#include <cstdlib>
class A {
public:
static const std::size_t value = 42;
};
简而言之,我有(或者更好,想要)一个类A
,它的static const std::size_t
成员value
用值42
(在编译时确定)调用。
现在,IIRC,这仅在某些情况下才能正常工作。例如,当您获取A::value
. 为了在所有情况下都能正常工作,您需要在一些实现文件中添加定义:
const std::size_t A::value;
但是,我不能这样做,因为我希望这个文件是header-only。另一个常见的解决方案是:
class A {
public:
enum { value = 42 };
};
我也不喜欢这种解决方案,因为我希望类型A::value
为std::size_t
.
这个问题有什么好的解决方案?最好是一个小巧便携的解决方案,而不是像BOOST_STATIC_CONSTANT
.
我想要 C++03 的解决方案,而不是 C++11(在那里很简单)。