代码之家  ›  专栏  ›  技术社区  ›  Tom Huntington

mdspan运算符[]未在visualstudio中编译[重复]

  •  0
  • Tom Huntington  · 技术社区  · 7 月前

    https://godbolt.org/z/f4dc83fr3

    std::vector v{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    auto ms2 = std::mdspan(v.data(), 2, 6);
    ms2[0, 0] = 3;
    

    错误C2676:二进制“[”:“std::mdspan<_Ty,std::extents<_IndexType,1844674407370955161518446744073709551615>,std:;layout_right,std:,default_accessor<_Ty>>”未定义此运算符,也未定义到预定义运算符可接受类型的转换

    1 回复  |  直到 7 月前
        1
  •  2
  •   cpplearner    7 月前

    MSVC还不支持多维下标运算符。看见 https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=msvc-170 :

    C++23核心语言功能 支持
    P2128R6多维下标运算符

    解决方法:使用 ms2[std::array{0, 0}] 而不是 ms2[0, 0] .