Fix Wdeprecated-copy in wfl::variant, and add move operations

Fixes the majority of the warnings in issue #4166.

This class already shared copies of value_ between instances,
it seems to be the immutable design pattern so can share from
const to non-const instances safely.
This commit is contained in:
Steve Cotton 2019-07-15 20:18:25 +02:00 committed by Charles Dang
parent 38b6faf4c2
commit 75a71933e7
2 changed files with 4 additions and 7 deletions

View file

@ -180,12 +180,6 @@ variant::variant(const std::map<variant,variant>& map)
assert(value_.get());
}
variant& variant::operator=(const variant& v)
{
value_ = v.value_;
return *this;
}
variant variant::operator[](size_t n) const
{
if(is_callable()) {

View file

@ -36,6 +36,8 @@ public:
explicit variant(const std::vector<variant>& array);
explicit variant(const std::string& str);
explicit variant(const std::map<variant, variant>& map);
variant(const variant& v) = default;
variant(variant&& v) = default;
template<typename T>
variant(std::shared_ptr<T> callable)
@ -44,7 +46,8 @@ public:
assert(value_.get());
}
variant& operator=(const variant& v);
variant& operator=(const variant& v) = default;
variant& operator=(variant&& v) = default;
variant operator[](size_t n) const;
variant operator[](const variant& v) const;