1

我有一个带有模板参数的类,它是一个无符号整数。在实现过程中,我不得不经常使用下面的表达式(SIZE 是模板参数):

(SIZE + sizeof(unsigned int) - 1) / sizeof(unsigned int)

将此值放入编译时间常数以避免每次我想使用它时写出整个表达式的最佳方法是什么?

ps:如果可能的话,我想使用C++03。

4

1 回答 1

3

你可以做:

template <unsigned SIZE>
class C
{
public:
    static const unsigned NumWords=(SIZE + sizeof(unsigned int) - 1) / 
                                   sizeof(unsigned int);
};

根据您的编译器,该常量应该在编译时可用:

int array[C<24>::NumWords];

C++11 提供constexpr了这类东西,但您将答案限制在 C++03。

于 2013-08-14T21:07:38.440 回答