summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--accessors.h21
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*/