Это компилируется:
int* p1;
const int* p2;
p2 = p1;
Это не означает:
vector<int*> v1;
vector<const int*> v2;
v2 = v1; // Error!
v2 = static_cast<vector<const int*> >(v1); // Error!
Каковы правила эквивалентности типов для вложенных указателей констант? Я думал, что обращение будет неявным. Кроме того, я бы предпочел не применять точечное назначение контейнеров STL, если только мне это не нужно.