【发布时间】:2016-05-22 03:34:12
【问题描述】:
我正在寻找以下结果:
/* true */ std::cout << ptr_to_const_v<const int*> << '\n';
/* true */ std::cout << ptr_to_const_v<const int*const> << '\n';
/* false */ std::cout << ptr_to_const_v<int*> << '\n';
/* false */ std::cout << ptr_to_const_v<int*const> << '\n';
这是我对类型特征的尝试:
template <typename T>
struct ptr_to_const : std::is_const<std::remove_pointer<T>> {};
这给出了所有 false。
或者,
template <typename T>
struct ptr_to_const : std::is_const<const std::remove_pointer<T>> {};
这给出了所有true。
我想这是因为 const 是类型的限定符,而不是类型本身的一部分。
我能做什么?
【问题讨论】:
-
您希望从
ptr_to_const<char>::value得到什么?
标签: c++ templates constants typetraits c++17