diff options
-rw-r--r-- | accessors.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/accessors.h b/accessors.h index 708b266..8c6391e 100644 --- a/accessors.h +++ b/accessors.h @@ -31,10 +31,15 @@ // * http://www.kirit.com/C%2B%2B%20killed%20the%20get%20%26%20set%20accessors // * http://www.kirit.com/C%2B%2B%20killed%20the%20get%20%26%20set%20accessors/A%20simple%20meta-accessor +enum Accessor_type { rw, ro }; + +template<typename T, Accessor_type = rw > +class Accessors; + template<typename T> -class Accessors { +class Accessors<T, rw> { public: - Accessors() {} + Accessors<T, rw>() {} explicit Accessors(const T &t) : m_t(t) {} const T &operator() () const { return m_t; } @@ -44,4 +49,16 @@ private: T m_t; }; +template<typename T> +class Accessors<T, ro> { +public: + Accessors<T, ro>() {} + explicit Accessors(const T &t) : m_t(t) {} + + const T &operator() () const { return m_t; } + +private: + T m_t; +}; + #endif /*ACCESSORS_H*/ |