为何无法从二维C数组构造std::mdspan?
关于std::mdspan无法从二维C数组构造的问题
以下代码无法通过编译:
void fn(std::span<int> ) {} int main() { int arr[4][5]{}}; fn(arr[0]); std::mdspan msp(arr); }
问题出在std::mdspan无法直接从二维C数组构造。这是标准有意设计的行为,其推导指引中明确限定:
requires(std::is_array_v<CArray> && std::rank_v<CArray> == 1)
但这种设计存在反直觉的地方。实际开发中,我们经常会持有固定大小的二维数组,希望将其传递给支持任意二维mdspan的泛型函数,这种使用场景应该得到支持。
内容的提问来源于stack exchange,提问作者NoSenseEtAl
相关产品推荐
相关产品推荐

