add ctor for initializer_list

This commit is contained in:
ToruNiina
2017-04-20 10:44:11 +09:00
parent df3602f347
commit 4a5f4a4bf5

View File

@@ -296,6 +296,12 @@ class value
value_traits<T>::is_toml_type, std::nullptr_t>::type = nullptr>
value& operator=(T&& v);
template<typename T, typename std::enable_if<
value_traits<T>::is_toml_type, std::nullptr_t>::type = nullptr>
value(std::initializer_list<T> init);
value(std::initializer_list<std::pair<toml::key, toml::value>> init);
value_t type() const {return type_;}
template<value_t T>
@@ -703,6 +709,27 @@ value& value::operator=(T&& v)
return *this;
}
template<typename T, typename std::enable_if<
value_traits<T>::is_toml_type, std::nullptr_t>::type>
value::value(std::initializer_list<T> init)
: type_(toml::value_t::Array)
{
toml::Array arr; arr.reserve(init.size());
for(auto&& item : init)
arr.emplace_back(std::move(item));
switch_assign<toml::value_t::Array>::invoke(*this, std::move(arr));
}
inline value::value(
std::initializer_list<std::pair<toml::key, toml::value>> init)
: type_(toml::value_t::Table)
{
toml::Table tmp;
for(auto&& item : init)
tmp.emplace(std::move(item.first), std::move(item.second));
switch_assign<toml::value_t::Table>::invoke(*this, std::move(tmp));
}
template<value_t T>
inline typename detail::toml_default_type<T>::type const&
value::cast() const