話の流れとはずれますが、C++の仕様の確認のための質問をします。
namespace AAA {
 void func() {
  std::vector<TYPE> v;
 }
}
と書いた場合、コンパイラはstdをAAAの中に最初に探し、AAAの中に見つからなければ
「グローバルな名前空間」から探すので、AAAの中にstdが見つからない場合でも、
::std と書かなくてもエラーにはならないんですよね?