Normalmente, si necesito detectar si un tipo es const
solo uso . Sin embargo, tuve problemas al tratar de detectar la constidad de un tipo anidado. Considere la siguiente plantilla rasgos, que está especializada para este tipo const:Detección de const-ness del tipo anidado
template <class T>
struct traits
{
typedef T& reference;
};
template <class T>
struct traits<const T>
{
typedef T const& reference;
};
El problema es que boost::is_const
no parece detectar que traits<const T>::reference
es un tipo const
.
Por ejemplo:
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;
Este salidas: false false
¿Por qué no se false true
de salida?
s/is_cost/is_const / –