这可以很好地作为 x64 VS100(MSVC++ 2010)上的函数声明的参数构建,但在 RHEL5(gcc 4.1.2)上失败:
const std::vector<std::pair<std::string, std::string> >& = std::vector<std::pair<std::string, std::string> >()
自有人问起的整个功能是(所述参数是第三个):
bool func(const std::string&, const std::vector<int>&, const std::vector<std::pair<std::string, std::string> >& =
std::vector<std::pair<std::string, std::string> >(), const std::vector<std::string>& = std::vector<std::string>(),
const std::vector<std::string>& = std::vector<std::string>(), const std::vector<double>& = std::vector<double>(),
const std::vector<double>& = std::vector<double>(), const std::vector<double>& = std::vector<double>(),
const std::vector<double>& = std::vector<double>(), const std::vector<double>& = std::vector<double>(),
const std::string& = "", const std::string& = "", const std::string& = "") const;
我在 RHEL5 gcc-4.1.2 上遇到的错误是:
line #: error: expected ',' or '...' before '>' token
line #: error: wrong number of template arguments (1, should be 2)
line #: error: template argument 1 is invalid
line #: error: template argument 2 is invalid
请注意,这在两个平台上都可以正常编译,并将第三个参数替换为:
std::vector<std::string>& = std::vector<std::string>()
我目前的解决方法是使用后一种形式并稍微改变我的实现以解决它,这目前可以完成工作。但是,对于为什么原始用法未能在 RHEL5 gcc-4.1.2 上构建以及正确用法的任何想法都非常感谢。谢谢你。