我(大多数情况下)喜欢新的C ++核心指南计划,以及指南支持图书馆提供的内容。具体来说,我想更多地使用span
。但是,当我想/需要使用它时,我遇到__restrict__
不属于C ++的问题。
更具体一点:没有span
,我会声明:
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);
或者,我可以调整GSL span<T>
实现,以便T* begin
和T* end
指针本身__restrict__
编辑。但是,not at all certain这将得到尊重。
那么,我可以以某种方式强制__restrict__
'离子吗?或者我应该放弃它?这样可以转换为span
的...