如果你定义了个模板函数例如:
template<typename T> void write(fstream & f, T &a) { .... }
那么在调用时写write<double>(f,a);
就有可能出现expected primary-expression before "double"的错误。这是因为有可能有的头文件中有write这个函数,并且它不是模板函数,那么就会导致expected primary-expression before错误。只要上面改动一下函数名就可以解决。