通常,如果需要检测某种类型是否为const
,我只需使用boost::is_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 true
?
s/is_cost/is_const / – 2011-01-13 19:05:42