
Dave Abrahams wrote:
Actually there's a much more concise solution using the type traits library. That is, after all, the focus of the chapter.
I believe that would be:
template <typename T> struct add_const_ref { typedef add_const<add_ref<T>::type>::type type; };
Correct me if I'm wrong.
Eric.
This will not works because does not add const to references For example: add_const<int &>::type; // type is int & and not int const & I was not expecting that but it makes sence if we compare references to const pointer: add_const<int *>::type would give int * const and not int const *. Since a reference in essentially equivalent to T * const (but without the need of an inderection to uses it) add_const does not have any effect in that case. Given that, it is trivial to modify Eric's solution to have the proper result. Philippe