使用GSL跨度时避免__restrict__丢失

时间:2016-05-30 08:50:59

标签: c++ restrict guideline-support-library

我(大多数情况下)喜欢新的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* beginT* end指针本身__restrict__编辑。但是,not at all certain这将得到尊重。

那么,我可以以某种方式强制__restrict__'离子吗?或者我应该放弃它?这样可以转换为span的...

0 个答案:

没有答案