diff options
| -rw-r--r-- | include/value_initializer.h | 8 | ||||
| -rw-r--r-- | src/value_initializer.cpp | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/include/value_initializer.h b/include/value_initializer.h index 57e78ec518..8f0ebaf60e 100644 --- a/include/value_initializer.h +++ b/include/value_initializer.h @@ -45,11 +45,13 @@ public: value_initializer(std::string&& str); value_initializer(const char* str); - value& get() const; + value& get(); + const value& get() const; + operator value&(); + operator const value&() const; private: - mutable value value_; //FIXME: std::initializer_list objects are constant. - //This solution will probably fail + value value_; }; } diff --git a/src/value_initializer.cpp b/src/value_initializer.cpp index 8d57933e09..3de74da717 100644 --- a/src/value_initializer.cpp +++ b/src/value_initializer.cpp @@ -37,6 +37,9 @@ value_initializer::value_initializer(const std::string& str): value_(tag_string( value_initializer::value_initializer(std::string&& str): value_(tag_string(std::move(str))) {} value_initializer::value_initializer(const char* str): value_(tag_string(str)) {} -value& value_initializer::get() const { return value_; } +value& value_initializer::get() { return value_; } +const value& value_initializer::get() const { return value_; } +value_initializer::operator value&() { return value_; } +value_initializer::operator const value&() const { return value_; } } |
