Boost logo

Boost :

From: Dave Abrahams (abrahams_at_[hidden])
Date: 2000-12-18 11:41:22


I know we had a long discussion about the intent of the standard with
regard to the question "is T* const a pointer"? I think the
resolution was that, however strict, our previous reading of the
standard misconstrued its intent and we would change the behavior of
type_traits appropriately. Did that ever happen, or have I
misunderstood our conclusion?

Reading ob_type_traits.hpp, I see:

----
//* is a type T a pointer type (including function pointers) - 
is_pointer<T>
template <typename T> struct is_pointer 
{ 
private:
   static T t;
public:
   enum{ value = (!is_const<T>::value 
                 & !is_volatile<T>::value 
                 & !is_reference<T>::value
                 & !is_array<T>::value)
                 & ((1 == sizeof(detail::is_pointer_helper(t)))
                     | (1 == sizeof(detail::is_pointer_helper3
(t)))) }; 
};
-----
This seems to indicate that T* const or T* volatile will not be 
treated as pointers by type_traits. Have I misread the code?
Thanks,
Dave

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk