The following doesn't compile (very verbose error, but basically "cannot be overloaded" and "invalid conversion from 'const void*' to 'void*'").  I can understand why for example push_back() may not compile, as you can't copy/move into a Foo* const, but why doesn't this compile:
#include <vector>
using namespace std;
class Foo;
int main()
{
  vector<Foo* const> vec;
}
 
     
     
     
    