从模板参数指定常量值

时间:2013-08-14 21:04:07

标签: c++ templates

我有一个带有模板参数的类,什么是unsigned int。在实现过程中,我必须使用以下表达式(SIZE是模板参数):

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

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

p.s。:如果可能,我想使用C ++ 03。

1 个答案:

答案 0 :(得分: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的答案。