【发布时间】:2017-01-30 14:17:48
【问题描述】:
我需要专门化一个成员函数:
template <typename T>
int32_t writeVectorVariableUnit(
foo& classFoo,
typename std::vector<T>::const_iterator& start,
typename std::vector<T>::const_iterator& stop,
const std::string& name,
const std::string& unit,
const std::string& longName,
const std::vector<std::string>& dimName) const
这样:
template <>
int32_t writeVectorVariableUnit(
foo& classFoo,
std::vector<uint16_t>::const_iterator& start,
std::vector<uint16_t>::const_iterator& stop,
const std::string& name,
const std::string& unit,
const std::string& longName,
const std::vector<std::string>& dimName) const;
但 g++ 编译器(redhat 6.7 上的 4.4.7 版)抱怨无法匹配任何模板声明:
错误:模板 id 'writeVectorVariableUnit' for 'int32_t writeVectorVariableUnit(foo&, __gnu_cxx::__normal_iterator > >&, __gnu_cxx::__normal_iterator > >&, const std::string&, const std::string&, const std::string&, 常量标准::向量, std::allocator >, std::allocator, std::allocator > > >&) const' 不 匹配任何模板声明
我怀疑与typename的用法有关,我尝试了几种组合都没有成功。 你有什么建议吗?
【问题讨论】:
标签: c++ c++11 templates template-specialization