G++, compiler warnings, c++ templates

Posted by Ian on Stack Overflow See other posts from Stack Overflow or by Ian
Published on 2011-01-08T14:48:09Z Indexed on 2011/01/08 14:53 UTC
Read the original article Hit count: 333

Filed under:
|
|

During the compilatiion of the C++ program those warnings appeared:

c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bc:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algo.h:2317:   instantiated from `void std::partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Object<double>**, std::vector<Object<double>*, std::allocator<Object<double>*> > >, _Compare = sortObjects<double>]'

c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algo.h:2506:   instantiated from `void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Object<double>**, std::vector<Object<double>*, std::allocator<Object<double>*> > >, _Size = int, _Compare = sortObjects<double>]'

c:/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/bits/stl_algo.h:2589:   instantiated from `void std::sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Object<double>**, std::vector<Object<double>*, std::allocator<Object<double>*> > >, _Compare = sortObjects<double>]'

io/../structures/objects/../../algorithm/analysis/../../structures/list/ObjectsList.hpp:141:   instantiated from `void ObjectsList <T>::sortObjects(unsigned int, T, T, T, T, unsigned int) [with T = double]'

I do not why, because all objects have only template parameter T, their local variables are also T.

The only place, where I am using double is main. There are objects of type double creating and adding into the ObjectsList...

Object <double> o1;
ObjectsList <double> olist;
olist.push_back(o1);
....
T xmin = ..., ymin = ..., xmax = ..., ymax = ...;
unsigned int n = ...;
olist.sortAllObjects(xmin, ymin, xmax, ymax, n);

and comparator

template <class T>
class sortObjects
{
    private:
            unsigned int n;
            T xmin, ymin, xmax, ymax;

    public:

            sortObjects ( const T xmin_, const T ymin_, const T xmax_, const T ymax_, const int n_ ) :
                    xmin ( xmin_ ), ymin ( ymin_ ), xmax ( xmax_ ), ymax ( ymax_ ), n ( n_ ) {}

            bool operator() ( const Object <T> *o1, const Object <T> *o2 ) const
            {
                    T dmax = (std::max) ( xmax - xmin, ymax - ymin );
                    T x_max = ( xmax - xmin ) / dmax;
                    T y_max = ( ymax - ymin ) / dmax;
                    ...
                    return ....;
            }

representing ObjectsList method:

template <class T>
void ObjectsList <T> ::sortAllObjects ( const T xmin, const T ymin, const T xmax, const T ymax, const unsigned int n )
{
 std::sort ( objects.begin(), objects.end(), sortObjects <T> ( xmin, ymin, xmax, ymax, n ) );
}

© Stack Overflow or respective owner

Related posts about templates

Related posts about g++