Q:

std::pair as a template argument? C++

I have a class that is a template, using the argument: template <class X>
Can I template this class to be of type std::pair < W, Z>? I am getting an unresolved external symbol error, and trying to track down the cause.

A:

A little example of passing a pair into a template.
#include <iostream>
#include <vector>

template <typename T>
class C {
    public:
        void add(const T& val) { m_vec.push_back(val); }
    private:
        std::vector<T> m_vec;
};

int main()
{
    C<std::pair<int, char> > pairC;
    pairC.add(std::make_pair(5, 2));
}

would instantiate a template class taking a  std::pair and holding it in a vector.  Add inserts a pair made with make_pair into that vector.
Note that for older C++ compilers you need to add a space between the two right-chevrons to stop it from being seen as a right-shift operator.

