考虑这样的代码:
#include <map>
#include <boost/shared_ptr.hpp>
template <typename T>
class Test
{
typedef std::map< int, boost::shared_ptr<T> > TMap;
TMap myMap;
void test()
{
TMap::const_iterator iter = myMap.begin(); // line 12
}
};
在使用g++ main.cpp
进行正常编译后,返回以下行:
main.cpp: In member function ‘void Test<T>::test()’:
main.cpp:12: error: expected ‘;’ before ‘iter’
如果我将std::map< int, boost::shared_ptr<T> >
更改为std::map< int, int >
,则会进行编译。
似乎模板对象boost::shared_ptr<T>
作为参数传递给另一个模板对象时出现问题。