template <typename S>
class c_str_veneer
: public S
, is_veneer<S, c_str_veneer<S> >
{
public:
typedef S parent_class_type;
typedef typename S::value_type value_type;
// Other methods, including constructors
...
value_type const *c_str() const;
};
template <>
inline LPCTSTR c_str_veneer<CString>::c_str() const
{
return *this;
}