造成这个问题的原因是:
'*****'在一个以上的命名空间内被定义,使得有多个'*****'同时满足,系统不知具体使用哪一个;
如boost和std中都定义了function函数类型模板,如果在程序开头,同时使用using namespace std;和
using namespace boost;就会出现Reference to 'function' is ambiguous,的错误提示。
解决此类问题的办法是:尽量不要使用 using namespace xx;,
而是要用包含命名空间的变量类型,类似:using std::function; 或 std::function<void*(void*)>等