C++ mingw gcc单文件多命名空间的问题

这个问题其实不大,就是我在开发一个东西时,在一个util文件(ctool.h)中定义了2个namespace(互相独立,不包含),然后在ctool.cpp中using这两个namespace,代码缩写如下.

//ctool.h
#ifndef CTOOL_INC
#define CTOOL_INC
 namespace a{
   void b();
  class Cs{
    public:
    void a();
  }
}
namespace d{
  void d();
}
#endif
//ctool.cpp
#include "ctool.h"

using namespace a;
using namespace c;

void b(){}

void d(){}

void Cs::a(){

}
//main.cpp
#include "ctool.h"

int main(){
  a::b();//1
  a::Cs cs;//2
  cs.a();//3
  c::d();//4
  return 0;
}

在main.cpp中,只有2与3没报错,不在类里的函数全报错了,说没有引用,但是如果只有一个namespace却不会报这种错,请问这有什么依据吗,还是MinGW就是这么得玄?