@@ -90,8 +90,8 @@ static const any invalid_key(nullptr);
9090
9191auto any::operator[](const symbol_t key) const -> const any& {
9292 // TODO: assumes at least one element -- safe assumption?
93− const auto& m = cast<map<1>>(*this);
94− any::map<1>::size_type i = 0;
93+ const auto& m = cast<map<unknown_size>>(*this);
94+ std::remove_reference<decltype(m)>::type::size_type i = 0;
9595 do {
9696 if (m[i].first == key) {
9797 return m[i].second;
@@ -113,8 +113,8 @@ auto any::operator[](const any& rhs) const -> const any& {
113113
114114auto any::contains(const symbol_t key) const -> bool {
115115 // TODO: assumes at least one element -- safe assumption?
116− const auto& m = cast<map<1>>(*this);
117− any::map<1>::size_type i = 0;
116+ const auto& m = cast<map<unknown_size>>(*this);
117+ std::remove_reference<decltype(m)>::type::size_type i = 0;
118118 do {
119119 if (m[i].first == key) {
120120 return true;