FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian GCC

 
 
LinkBack Thread Tools
 
Old 01-17-2009, 02:43 PM
Martin Read
 
Default Bug#512129: (no subject)

Package: g++-4.3
Version: 4.3.2-1.1

When compiling a program which used the C++ STL to contain instances of a class
of my own devising, I encountered spurious warnings. I have been able to reduce
the necessary code to a simple test case, which is included in this bug report
along with a transcript of the spurious warninngs seen when compiling it.

mormegil@fangasm:~/src/dungeonbash-2.0.0$ uname -a
Linux fangasm 2.6.26-1-686 #1 SMP Wed Nov 26 19:14:11 UTC 2008 i686 GNU/Linux
mormegil@fangasm:~/src/dungeonbash-2.0.0$ g++ --version
g++ (Debian 4.3.2-1.1) 4.3.2
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mormegil@fangasm:~/src/dungeonbash-2.0.0$ make coordtest
g++ -c -g -Wall -Wwrite-strings -Wredundant-decls -Wunreachable-code
-DMAJVERS=2 -DMINVERS=0 -DPATCHVERS=0 -c -o coordtest.o coordtest.cc
coordtest.cc: In member function ??T libmrl::basic_coord<T>::distance(const libmrl::basic_coord<T>&) const [with T = int]??:
coordtest.cc:28: warning: will never be executed
coordtest.cc: In member function ??bool libmrl::basic_coord<T>:perator<(const libmrl::basic_coord<T>&) const [with T = int]??:
coordtest.cc:20: warning: will never be executed
/usr/include/c++/4.3/bits/stl_tree.h: In member function ??std::_Rb_tree_node<_Val>* std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_create_node(const _Val&) [with _Key = libmrl::basic_coord<int>, _Val = libmrl::basic_coord<int>, _KeyOfValue = std::_Identity<libmrl::basic_coord<int> >, _Compare = std::less<libmrl::basic_coord<int> >, _Alloc = std::allocator<libmrl::basic_coord<int> >]??:
/usr/include/c++/4.3/bits/stl_tree.h:369: warning: will never be executed
/usr/include/c++/4.3/bits/stl_tree.h:372: warning: will never be executed
/usr/include/c++/4.3/bits/stl_tree.h:369: warning: will never be executed
g++ coordtest.o -o coordtest
mormegil@fangasm:~/src/dungeonbash-2.0.0$

mormegil@fangasm:~$ ls -l /lib/libc.so.6
lrwxrwxrwx 1 root root 11 2008-12-17 22:00 /lib/libc.so.6 -> libc-2.7.so
mormegil@fangasm:~$

The test case follows:

#include <cstdio>
#include <list>
#include <set>

namespace libmrl
{
template <typename T> class basic_coord
{
public:
T y;
T x;
basic_coord<T>& operator -=(basic_coord<T> const& right) throw()
{
y -= right.y; x -= right.x; return *this;
}
basic_coord<T>& operator +=(basic_coord<T> const& right) throw()
{
y += right.y; x += right.x; return *this;
}
bool operator < (basic_coord<T> const& right) const throw()
{
return (y < right.y) || ((y == right.y) && (x < right.x));
}
bool operator == (basic_coord<T> const& right) const throw()
{
return (y == right.y) && (x == right.x);
}
T distance(basic_coord<T> const& right) const throw()
{
T dy, dx;
dy = right.y - y;
dx = right.x - x;
if (dy < 0) dy = -dy;
if (dx < 0) dx = -dx;
return (dy > dx) ? dy : dx;
}
};

typedef basic_coord<int> Coord;
}

int main()
{
libmrl::Coord c = { 1, 2 };
libmrl::Coord d = { 3, 4 };
std:rintf("%d %d to %d %d: distance %d or %d
", c.y, c.x, d.y, d.x, c.distance(d), d.distance(c));
std::list<libmrl::Coord> oink;
oink.push_front(c);
oink.push_front(d);
std:rintf("%d
", oink.size());
std::set<libmrl::Coord> spang;
spang.insert(c);
spang.insert(d);
std:rintf("%d
", spang.size());
}



--
To UNSUBSCRIBE, email to debian-gcc-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 

Thread Tools




All times are GMT. The time now is 10:08 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org