c++ - 编译时和运行时数组的一个模板类(名称),代码重复很少

标签 c++ arrays c++11

有没有一种方法可以构造一个模板类,它既可以用作编译数组又可以用作运行时数组(很像 C89 恒定大小数组和相同的 C99 可变长度数组),它允许逻辑语义(可变长度的一个模板参数)数组,两个固定长度,很像 std::array).

最重要的是,我想防止这两种情况之间的代码重复,因为这两种情况之间的大多数功能是相同的。有没有办法使用 constexprenable_if 来实现这一点?

最佳答案

Eigen linear algebra library只用 C++03 做了这件事。它们的矩阵具有带有特殊值 (Eigen::Dynamic) 的编译时大小,指示应该在运行时选择大小。通过模板特化实现存储。

例子:

template <typename Type,int N>
class Array {
   Type data[N];
};

template <typename Type>
class Array<Type,Dynamic> {
   boost::scoped_array<Type> data;
};

关于c++ - 编译时和运行时数组的一个模板类(名称),代码重复很少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742278/

相关文章:

c++ - 为什么 boost::call_traits<T>::param_type 是枚举类型的引用?

c++ - 弱指针是否保证在 std::shared_ptr 删除器运行时已经过期?

java - 如何给java足够的时间给变量赋值?

c++ - std::condition_variable 的谓词是否在锁下执行?

c++ - 如何在 C++ 中执行命令并获取命令的返回码 stdout 和 stderr

c++ - 为什么 C 数组在传递给函数时具有错误的 sizeof() 值?

c++ - 在blocks-c++中读取文本文件

c - C分配二维整数数组

C# 将字符串转换为数组

c++ - 从模板基类继承构造函数而不重复模板参数?