C++ 为什么boost::multi#u阵列';s ConstMultiArrayConcept是否有NumDims模板参数?

C++ 为什么boost::multi#u阵列';s ConstMultiArrayConcept是否有NumDims模板参数?,c++,boost,boost-multi-array,c++-concepts,C++,Boost,Boost Multi Array,C++ Concepts,我编写了一个操作符概念模板类声明: template <typename Array, std::size_t NumDims> struct ConstMultiArrayConcept { ... }; multi_-array\u view&operator=()和sub_-array&operator=()中采用其他ConstMultiArray类型的相同代码 看起来NumDims不是传递的数组类型的维度号array,而是外部数组类型的维度号,用于检查与给定其他数组类型的

我编写了一个
操作符概念模板类声明:

template <typename Array, std::size_t NumDims>  struct ConstMultiArrayConcept
{
...
};
multi_-array\u view&operator=()
sub_-array&operator=()
中采用其他
ConstMultiArray
类型的相同代码

看起来
NumDims
不是传递的数组类型的维度号
array
,而是外部数组类型的维度号,用于检查与给定其他数组类型的分配兼容性。因此,它不能从
数组
模板参数推断

template <typename Array, std::size_t NumDims>  struct ConstMultiArrayConcept
{
...
};
 template <typename T, std::size_t NumDims>
 class multi_array_ref {
   ...
   // Assignment from other ConstMultiArray types.
   template <typename ConstMultiArray>
   multi_array_ref& operator=(const ConstMultiArray& other)
   {
      function_requires< 
         detail::multi_array::
         ConstMultiArrayConcept<ConstMultiArray,NumDims> >();
      ...