This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: template-id does not match any template declaration


Hi,

You were almost there! Just a little syntax tweak for your separate definition of your member function of your explicit template specialization for pair<int>::module. (See below.)

Also, I changed the return statement on your general pair template pair::module to something more suitable.

Caution, there is a std::pair. Your ::pair is okay, but could be a little better protected by putting your pair class in your own namespace. Or, make sure you never do a "using namespace std" anywhere (I disparage "pulling in the std uberverse namespace" on general principle).

HTH,
--Eljay

-------------------------------
#include <iostream>
using std::cout;

template <class T>
class pair
{
    T value1;
    T value2;
public:
    pair(T first, T second)
    {
        value1 = first;
        value2 = second;
    }
    T module()
    {
        return T();
    }
};

template <>
class pair<int>
{
    int value1;
    int value2;
public:
    pair(int first, int second)
    {
        value1 = first;
        value2 = second;
    }
    int module();
};

int pair<int>::module()
{
    return value1 % value2;
}

int main()
{
    pair<int> myints(100, 75);
    pair<float> myfloats(100.0, 75.0);
    cout << myints.module() << '\n';
    cout << myfloats.module() << '\n';
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]