使用C++26的

编程语言 2026-07-08

我的C++编译器(g++ 16)在幕后改变了 <simd> 库的实现,这迫使我去学习这个库的新版本。

我有两个问题:

  • 我不知道如何把ABI模板参数设置为 std::simd::basic_vec。我不能使用默认ABI,因为我需要一个具有特定大小的向量(例如包含4 个浮点数的向量)。
  • 我不知道如何为向量设置值。我尝试通过构造函数参数传入值(没有这样的构造函数),以及使用 operator[](只有只读版本的运算符)。

我在网上搜索,但只找到关于使用 <experimental/simd> 库的旧方式的信息。此外cppreference.com的页面也不可用,因为关于SIMD的大部分内容都是红色链接(不幸的是缺少关键要素)。另外,例如,该页还称 std::simd::simd 是一个在我的编译器标准库中不存在的类型。

解决方案

int main() {
  std::simd::basic_vec bob = std::array{1,2,3,4};
}

有一个(受限的)基于范围的构造函数。std::array 足以满足它的前提条件。

要手动设置大小,std::simd::vec 是专门用于此目的的模板。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章