@@ -90,8 +90,8 @@ static const any invalid_key(nullptr);
91auto any::operator[](const symbol_t key) const -> const any& {
91auto any::operator[](const symbol_t key) const -> const any& {
92 // TODO: assumes at least one element -- safe assumption?
92 // TODO: assumes at least one element -- safe assumption?
93− const auto& m = cast<map<1>>(*this);
93+ const auto& m = cast<map<unknown_size>>(*this);
94− any::map<1>::size_type i = 0;
94+ std::remove_reference<decltype(m)>::type::size_type i = 0;
96 if (m[i].first == key) {
96 if (m[i].first == key) {
97 return m[i].second;
97 return m[i].second;
@@ -113,8 +113,8 @@ auto any::operator[](const any& rhs) const -> const any& {
114auto any::contains(const symbol_t key) const -> bool {
114auto any::contains(const symbol_t key) const -> bool {
115 // TODO: assumes at least one element -- safe assumption?
115 // TODO: assumes at least one element -- safe assumption?
116− const auto& m = cast<map<1>>(*this);
116+ const auto& m = cast<map<unknown_size>>(*this);
117− any::map<1>::size_type i = 0;
117+ std::remove_reference<decltype(m)>::type::size_type i = 0;
119 if (m[i].first == key) {
119 if (m[i].first == key) {
120 return true;
120 return true;