1

我对 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 的方法,似乎根本不可能。

4

2 回答 2

1

似乎在 C++ 98 中没有办法做到这一点,它根本行不通。

于 2018-03-14T12:55:36.017 回答
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 下编译。

于 2017-05-26T09:48:18.247 回答