通常,如果我需要检测一个类型是否是const
我只需使用boost::is_const
. 但是,在尝试检测嵌套类型的 const 时遇到了麻烦。考虑以下特征模板,它专门用于 const 类型:
template <class T>
struct traits
{
typedef T& reference;
};
template <class T>
struct traits<const T>
{
typedef T const& reference;
};
问题是boost::is_const
似乎没有检测到这traits<const T>::reference
是一种const
类型。
例如:
std::cout << std::boolalpha;
std::cout << boost::is_const<traits<int>::reference>::value << " ";
std::cout << boost::is_const<traits<const int>::reference>::value << std::endl;
这输出:false false
为什么不输出false true
?