将类型名与 reinterpret_cast() 一起使用
using typename with reinterpret_cast()
如何创建一个作为reinterpret_cast结果的typename?
例如
template<typename T1> class node{
public:
using null_sp2node = typename reinterpret_cast<shared_ptr<node<T1>>>(NULL);
};
上面生成以下编译器错误:
错误:"类型名称"之后应是限定名称
reinterpret_cast
返回一个值,而不是一个类型。具体来说,它是一种表达式。如果要获取表达式的类型,正确的工具是decltype
:
using null_sp2node = decltype(reinterpret_cast<shared_ptr<node<T1>>>(NULL));
但是,由于reinterpret_cast<T>
的结果是 T
类型的表达式,因此与仅:
using null_sp2node = shared_ptr<node<T1>>;
当然,既然reinterpret_cast<shared_ptr<node<T1>>>(NULL)
一开始就不成形,那就真的没关系了。不能将空指针常量reinterpret_cast
为非指针类型(某些整数类型除外(。
相关文章:
- 如何理解C++标准N3337中的expr.const.cast子句8
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- C++Cast运算符过载
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 如何将AERT_Allocate与 std:vector 一起使用