我遇到了c ++ 98常量表达式的问题。 以下是模板结构的示例..它将在编译时接收大小..
在没有c ++ 11 constexpr的情况下,是否有可能将此大小作为常量表达式? 看看GetCount()......
template <typename ValueType, UInt32 size>
struct FixedArray
{
ValueType mArr[size > 0 ? size : 1];
UInt32 GetCount() const { return size; }
...
other code
..
}
我希望能够做到这样的事情:
FixedArray<int , 10> a;
FixedArray<int , a.GetSize()> b;
编辑:
我无法找到适合C ++ 98的方法,似乎根本不可能。
答案 0 :(得分:0)
你可以使用老式的enum
元编程技巧:
template <typename ValueType, UInt32 size>
struct FixedArray
{
enum {value = size};
// All your other stuff, but ditch your GetCount() function.
};
然后,
FixedArray<int, 10> a;
FixedArray<int, a.value> b;
将在C ++ 98下编译。
答案 1 :(得分:0)
似乎在C ++ 98中无法做到这一点,它根本无法工作。