Анонимная структура - это структура, определенная в другом классе (структуре). Таким образом, вы не можете использовать такую структуру внутри контейнера, потому что в этом случае это не будет анонимная структура, а будет просто безымянной структурой.
В этой записи (что неверно)
map<int, struct { int i; }> m;
нет анонимной структуры. Есть попытка использовать неназванную структуру.
Вы можете написать, например,
#include <iostream>
#include <map>
int main()
{
using S = struct { int i; };
std::map<int, S> m;
}
Но, как я уже сказал, анонимной структуры нет.
Вот определение понятия «анонимная структура» (стандарт C, 6.7.2.1 спецификаторы структуры и объединения)
13 безымянный член типа структуры без тега называется анонимной структурой ;