Default value is not a container of std::any

This commit is contained in:
Zhihao Yuan 2019-11-17 19:11:09 -06:00
parent 4c5ded8c84
commit 3177f544f5
No known key found for this signature in database
GPG Key ID: A2E474BDAA37E11C

View File

@ -340,22 +340,16 @@ private:
*/ */
template <typename CONTAINER> template <typename CONTAINER>
details::enable_if_container<CONTAINER> get() const { details::enable_if_container<CONTAINER> get() const {
using ValueType = typename CONTAINER::value_type;
CONTAINER tResult;
if (!mValues.empty()) { if (!mValues.empty()) {
using ValueType = typename CONTAINER::value_type;
CONTAINER tResult;
std::transform( std::transform(
std::begin(mValues), std::end(mValues), std::back_inserter(tResult), std::begin(mValues), std::end(mValues), std::back_inserter(tResult),
[](const auto &value) { return std::any_cast<ValueType>(value); }); [](const auto &value) { return std::any_cast<ValueType>(value); });
return tResult; return tResult;
} }
if (mDefaultValue.has_value()) { if (mDefaultValue.has_value()) {
const auto &tDefaultValues = return std::any_cast<CONTAINER>(mDefaultValue);
std::any_cast<const CONTAINER &>(mDefaultValue);
std::transform(std::begin(tDefaultValues), std::end(tDefaultValues),
std::back_inserter(tResult), [](const auto &value) {
return std::any_cast<ValueType>(value);
});
return tResult;
} }
throw std::logic_error("No value provided"); throw std::logic_error("No value provided");
} }