i have existing code uses 'array' class represent 1d array. base template class implemented as
// forward declaration template<typename t> class array; // implementation of 'const' array class: template<typename t> class array<const t> { // ... };
this class has read-only interface, example element access operator present in const version:
const t& operator[](unsigned int i) const
then there's class derived array
, allows modification of member data:
template<typename t> class array<t> : public array<const t>
the derived class supplies
t& operator[](unsigned int i)
etc. in addition methods inherited parent. task perform refactoring of code extend functionality of array
. while thinking options, know if there's way of detecting cv-qualifier of array
's template parameter, example have
template <typename t> class array<t> { public: enum { is_const = template_param_is_const<t>::value; } // ... };
and is_const
have different values array<t>
, array<const t>
.
suggestions improvements of existing implementation preserve distinction between array<t>
, array<const t>
, above described behavior welcome.
Comments
Post a Comment