由于某些原因,以下代码会出现错误
另外,以下函数也不会导致错误,所以似乎与模板基类调用和const_iterator的组合有关:
有没有什么规定禁止在基类模板构造函数中使用const_iterator作为参数?或者这是编译器的bug吗?
我使用C++11,在Windows 7上使用MinGW 64位4.9.0进行编译。
符号“TemplateBase”无法解析
:template <typename T>
class TemplateBase
{
TemplateBase(std::map<std::string, T>::const_iterator anIterator)
{ }
};
class SubClass : public TemplateBase<int>
{
SubClass(std::map<std::string, int>::const_iterator anIterator) :
TemplateBase<int>(anIterator) //Error: Symbol 'TemplateBase' could not be resolved.
{ }
};
奇怪的是,当我删除::const_iterator
,只保留std::map<std::string, int>
时,没有出现错误:
template <typename T>
class TemplateBase
{
TemplateBase(std::map<std::string, T> aMap)
{ }
};
class SubClass : public TemplateBase<int>
{
SubClass(std::map<std::string, int> aMap) :
TemplateBase<int>(aMap) //No error.
{ }
};
另外,以下函数也不会导致错误,所以似乎与模板基类调用和const_iterator的组合有关:
void function()
{
std::map<std::string, int>::const_iterator anIterator;
TemplateBase<int> aTemplateBase(anIterator); //No error
}
有没有什么规定禁止在基类模板构造函数中使用const_iterator作为参数?或者这是编译器的bug吗?
我使用C++11,在Windows 7上使用MinGW 64位4.9.0进行编译。
typename
。 - ildjarn