Re: c2244 and namespace error.
<cablepuff@gmail.com> wrote in message
news:1192042730.298882.311640@r29g2000hsg.googlegroups.com...
Recently i did some compilation test that resulted in C2244 unable to
match function declaration and function definition.
example..
inside the hpp file.
namespace something {
template <typename T,
template <typename ELEM, typename = std::allocator<ELEM> >
class CONT
extern void select_sort(CONT<T>&, typename CONT<T>::iterator, const
typename CONT<T>::size_type&, const typename CONT<T>::size_type&);
You always use this "extern" keyword, could you try without it and see if
your problems go away? It isn't necessary for C++ code.
}
inside the c file
template <typename T,
template <typename ELEM, typename = std::allocator<ELEM> >
class CONT
void Something::select_sort(CONT<T>& array, typename CONT<T>::iterator
Left,
const typename CONT<T>::size_type& Size, const
typename CONT<T>::size_type& Step)
{
typedef typename CONT<T>::iterator iter;
iter IEnd(boost::next(Left, (Size-1)*Step));
iter JEnd(boost::next(Left, Size*Step));
iter min;
iter Last(array.end());
BOOST_ASSERT(IEnd != Last);
BOOST_ASSERT(JEnd != Last);
for (iter i(Left); i < IEnd; std::advance(i, Step))
{
min = i;
for (iter j(boost::next(i, Step)); j < JEnd; std::advance(j,
Step))
{
if (*j < *min)
min = j;
}
std::iter_swap(i, min);
}
}
take it out of namespace and i don't get the error.