Dharmendra Bhojwani wrote:
I have a function declaration like this in a template class.
template <class T> class CElement
{
public:
template <class Y> bool _internal_less (CElement<Y> const& rhs) const;
};
And following is the function defination... template <class T, class Y> inline
  bool CElement <T>::_internal_less (CElement<Y> const& rhs) const
 {
 return iCount < rhs.iCount;
 }
when i compile it using , g++ , it gives error .... "prototype for `bool CElement<T>::_internal_less(const CElement<Y>&) const' does not match any in class `CElement<T>'"

couple of suggestions...

you can't define an inline function out of line ... also you need two separate template<> parameter definitions in your out of line definition, one for the class template and one for the template member function. With such a simple function I'd use an inline definition especially if you have profiling data to backup your need for inlining the function:

template <class T> class CElement
{
public:
    template <class Y>
    bool _internal_less (CElement<Y> const& rhs) const
    {
        return iCount < rhs.iCount;
    }
};

If you want an out of line definition then something like this should work:

template <class T>
template <class Y>
bool CElement <T>::_internal_less (CElement<Y> const& rhs) const
{
  return iCount < rhs.iCount;
}

Kevin

--
| Kevin Wheatley, Cinesite (Europe) Ltd | Nobody thinks this      |
| Senior Technology                     | My employer for certain |
| And Network Systems Architect         | Not even myself         |


_______________________________________________
Openexr-user mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/openexr-user

Reply via email to