summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/value_initializer.h8
-rw-r--r--src/value_initializer.cpp5
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_; }
}