The following code doesn't compile:
#include <iostream>
#include <set>
#include <utility>
using namespace std;
template <typename T1, typename T2>
class meta {
pair<T1,T2> xy_pair;
public:
/* meta(const T1 & t1, const T2 & t2) :
xy_pair.first(t1),
xy_pair.second(t2)
{}*/
meta() :
xy_pair.first(T1()),
xy_pair.second(T2())
{}
void print() const{
cout << xy_pair.first << endl;
cout << xy_pair.second << endl;
}
};
int main(){
meta<int,int> met_xy;
}
I get the following compiler error:
[root@localhost STL]# g++ -std=c++0x sets.cpp -o sets
sets.cpp: In constructor ‘meta<T1, T2>::meta()’:
sets.cpp:16:16: error: expected ‘(’ before ‘.’ token
sets.cpp:16:16: error: expected ‘{’ before ‘.’ token
sets.cpp: In member function ‘void meta<T1, T2>::print() const’:
sets.cpp:20:29: error: expected primary-expression before ‘,’ token
sets.cpp:20:32: error: expected primary-expression before ‘>’ token
sets.cpp:20:33: error: expected primary-expression before ‘.’ token
sets.cpp:21:29: error: expected primary-expression before ‘,’ token
sets.cpp:21:32: error: expected primary-expression before ‘>’ token
sets.cpp:21:33: error: expected primary-expression before ‘.’ token