【发布时间】:2017-05-26 09:42:59
【问题描述】:
我在使用 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 的方法,似乎根本不可能。
【问题讨论】:
-
人们现在正在加入 C++17。为什么要保持 19 年前的过时标准?
-
@DeiDei:大型软件堆栈是升级的障碍。但是,是的,现在真的应该至少迁移到 C++03。两年前我搬到了 C++11。我将安排在 2020 年的某个时候迁移到 C++17,并完全跳过 C++14。
-
@DeiDei 在我公司,我们必须支持现代和 c++98
-
@Bathsheba 也许吧,但我并不是真的买它。打开 C++14 编译器标志来重新编译旧项目可能不会破坏太多东西,如果有的话。至少不会在相当短的时间内修复太多。
标签: c++ templates c++98 compile-time-constant constant-expression