使用C++26的 库
我的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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。