使用模板大小参数计算某些值 用模板PARAMS计算某些值的C++方法是什么?< /P> template<typename T, size_t SIZE> class ThreadSafeArray { private: static const size_t BLOCK_SIZE = SIZE > 32 ? 16 : 4; static const size_t MUTEX_COUNT = SIZE / BLOCK_SIZE + 1; ... }; 模板 类ThreadSafeArray { 私人: 静态常数大小块大小=大小>32?16:4; 静态常量大小\u t互斥体计数=大小/块大小+1; ... };

使用模板大小参数计算某些值 用模板PARAMS计算某些值的C++方法是什么?< /P> template<typename T, size_t SIZE> class ThreadSafeArray { private: static const size_t BLOCK_SIZE = SIZE > 32 ? 16 : 4; static const size_t MUTEX_COUNT = SIZE / BLOCK_SIZE + 1; ... }; 模板 类ThreadSafeArray { 私人: 静态常数大小块大小=大小>32?16:4; 静态常量大小\u t互斥体计数=大小/块大小+1; ... };,c++,templates,template-meta-programming,C++,Templates,Template Meta Programming,还是这个 template<typename T, size_t SIZE> class ThreadSafeArray { private: enum { BLOCK_SIZE = SIZE > 32 ? 16 : 4, MUTEX_COUNT = SIZE / BLOCK_SIZE + 1 }; .... }; 模板 类ThreadSafeArray { 私人: 枚举 { 块大小=大小>32?16:4

还是这个

template<typename T, size_t SIZE>
class ThreadSafeArray
{
private:
    enum
    {
        BLOCK_SIZE = SIZE > 32 ? 16 : 4,
        MUTEX_COUNT = SIZE / BLOCK_SIZE + 1
    };
        ....
};
模板
类ThreadSafeArray
{
私人:
枚举
{
块大小=大小>32?16:4,
互斥数量=大小/块大小+1
};
....
};
或者别的什么?

enum hack”可以与真正的旧编译器一起工作,这些编译器不能正确地实现静态常量(大部分是预标准的)


除非您别无选择,只能为这些古老的工具开发,
静态常量
版本显然更可取。

枚举黑客是提供编译时计算的老方法。它是在某些编译器不支持类内初始化时使用的,因此不能使用
static const
。现在,它在所有现代编译器中都是固定的。 因此,首选的方法是使用
静态常量


<>检查更多信息.C++中的

,和大多数其他语言一样,没有一种正确的方法来做事情。我同意你的观点,这两种方法都是正确的,但是我想知道一些好的实践。