我(大部分)喜欢新的 C++ 核心指南倡议,以及指南支持库提供的内容。具体来说,我想span
更多地使用 s。__restrict__
但是,当我想/需要使用它时,我遇到了不属于 C++ 的问题。
更具体地说:没有span
's,我会声明:
void foo(int* __restrict__ p, size_t len);
但是,如果我现在声明:
void foo(gsl::span<int> s);
__restrict__
除非我的编译器超级智能,否则我不会得到效果。我可以向 gcc/clang/msvc 的众神祈祷并说:
void foo(gsl::span<int> __restrict__ s);
或者,我可以调整 GSLspan<T>
实现,以便T* begin
和T* end
指针本身是__restrict__
'ed。但是,完全不确定这是否会得到尊重。
那么,我可以以某种方式强制__restrict__
'ion 吗?还是我应该放弃它?这种方式让切换到span
's 的乐趣消失了...