__restrict__ shared_ptr和一般的任何类

__restrict__ shared_ptr and for any class in general

本文关键字:任何类 restrict shared ptr      更新时间:2023-10-16

是否可以__restrict__限定符用于std::shared_ptr

假设我有一个包装指针的类。是否有任何机制允许最终用户向类添加限制限定符?这应该等效于将限制限定符提供给包装的指针。

IIRC,非标准__restrict关键字(及其变体(适用于原始指针(或某些实现中的引用(。从编译器的角度来看,智能指针是普通类,因此您无法"限制"它们。

但是,如果您需要告诉编译器,在代码的某些部分中,智能指针指向的内存是通过单个指针对象专门访问的,则可以从智能指针中提取受限制的原始指针并改用它:

void f(std::shared_ptr<T>& ptr) {
  __restrict T* temp = ptr.get();
  // use temp here:
  ...
}