是否允许特化std::pointer_traits?适配第三方花式指针
关于特化
std::pointer_traits的疑问 标准文档对std::pointer_traits的特化说明如下:
针对用户定义的花式指针类型的特化可提供额外静态成员函数to_address,以自定义std::to_address的行为。
这似乎暗示可以特化该std类,此理解是否正确?
我需要为一个无法控制的花式指针类进行此操作——该类无法正常使用std::pointer_traits::rebind,无法完成正确的类型替换。
此前已有类似问题被提出,但未涉及pointer_traits的具体情况。
注意:我必须这么做的原因是,默认情况下这个我无法控制的指针类型,其重绑定功能无法正常工作。
以下是我尝试编写的特化代码:
template<class... As> struct std::pointer_traits<::thrust::pointer<As...>> : ::thrust::detail::pointer_traits<thrust::pointer<As...>> { template<class T> using rebind = typename ::thrust::detail::pointer_traits<::thrust::pointer<As...>>::template rebind<T>::other; };
内容的提问来源于stack exchange,提问作者alfC
相关产品推荐
相关产品推荐

