提问人:dr_eck 提问时间:11/15/2023 最后编辑:heap underrundr_eck 更新时间:11/15/2023 访问量:92
可视化 C++ mdspan
Visual C++ mdspan
问:
我一直在气喘吁吁地等待Microsoft发布他们的C++ std::mdspan实现。它今天在 V19 预览版 1 中发布。我正在尝试尝试,但似乎不起作用。这是我的代码:
std::vector<double> Bdat(dfcts.ndf * vbs.nvb); // allocate the space
using Dext = std::dextents<size_t, 2>;
std::mdspan<double, Dext> B{ Bdat.data(), dfcts.ndf, vbs.nvb}; // create the mdspan
B[0, 0] = 1.0;
最后一行给出错误:“没有运算符”[]“与这些操作数匹配。请告诉我我犯了一个明显的语法错误。我真的不想听到我可以创建一个 mdspan 但不能使用它。
答:
2赞
康桓瑋
11/15/2023
#1
MSVC 当前不支持多维语言功能,您可能需要使用另一个重载来接受 或 在此之前operator[]
array
span
B[std::array{0, 0}] = 1.0;
评论
0赞
dr_eck
11/16/2023
感谢您的解决方法!我还注意到,预览版 2 或 3 中不需要多维 [] 运算符。看起来我的代码在一段时间内会很丑陋,但至少我可以让它工作。
0赞
dr_eck
11/17/2023
哎呀!我刚刚在 cppreference.com 上查看了对多维下标运算符 (P2128R6) 的计划支持,发现 MSVC 没有计划支持此功能。这是链接: en.cppreference.com/w/cpp/compiler_support/23 .奇怪的是,除了当前预览版(19.39 = 2022 版本 17.9)之外,没有发布任何计划,这与过去的做法有所不同。我可能不得不切换到 Clang。
下一个:意外的 SIGSEGV
评论