Listing 1: A class template for deeply-const pointers, with named member functions for explicit conversions to true pointer types

// deep.h

#ifndef DEEP_H_INCLUDED
#define DEEP_H_INCLUDED

template <typename T>
class deep_pointer
    {
public:
    T *&value();
    T const *const &value() const;
private:
    T *actual_pointer;
    };

template <typename T>
inline
T *&deep_pointer<T>::value()
    {
    return actual_pointer;
    }

template <typename T>
inline
T const *const &
deep_pointer<T>::value() const
    {
    return actual_pointer;
    }

#endif