我有一個在VC6中編譯好的模板類。但它不是在VC9編譯。爲此,我在一種類型前添加了「typename」關鍵字。之後它在vc9中編譯,但不在VC6中編譯。我如何使它與編譯器一起編譯。如何使這個模板類在VC6和VC9中編譯
#include <map>
#include <vector>
template <class T1, class T2>
class A
{
public:
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool > insert(const std::pair<T1 ,T2> &value_in);
};
template <class T1, class T2>
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> A<T1,T2>::insert(const std::pair<T1 ,T2>& value_in)
{
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> b;
return b;
}
void main()
{
A<int, int> a;
a.insert(std::pair<int, int>(0, 0));
}
上面的代碼在VC6中編譯。但不是在VC9。 以下代碼適用於VC9,不適用於VC6。
#include <map>
#include <vector>
template <class T1, class T2>
class A
{
public:
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool > insert(const std::pair<T1 ,T2> &value_in);
};
template <class T1, class T2>
std::pair<typename std::vector<std::pair<T1,T2> >::iterator, bool> A<T1,T2>::insert(const std::pair<T1 ,T2>& value_in)
{
std::pair< std::vector<std::pair<T1,T2> >::iterator, bool> b;
return b;
}
void main()
{
A<int, int> a;
a.insert(std::pair<int, int>(0, 0));
}
在一些你要到編寫代碼sillyness的水平,在這兩個VC9和Fortran 77 – MSalters 2009-07-10 13:13:26