-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The C++ Standard Library has a reputation for excessively long error
messages, but this is one of the best I've seen in a while:

sbuild-keyfile.cc: In member function 'sbuild::string_list 
sbuild::keyfile::get_keys(const std::string&) const':
sbuild-keyfile.cc:62: error: invalid conversion from 'const 
std::tr1::tuple<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::map<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::tr1::tuple<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass>, std::less<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::tr1::tuple<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass> > > >, 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass>*' to 'std::tr1::tuple<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> 
>, std::tr1::tuple<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass>, std::less<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> > >, 
std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::tr1::tuple<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass> > > >, 
std::basic_string<char, std::char_traits<char>, std::allocator<char> >, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass, std::tr1::_NullClass, std::tr1::_NullClass, 
std::tr1::_NullClass>*'
sbuild-keyfile.cc:65: error: 'item_map_types' was not declared in this scope
sbuild-keyfile.cc:65: error: 'items' was not declared in this scope

In this case, it's nothing but a missing "const":

  // key, value, comment
  typedef std::tr1::tuple<std::string,std::string,std::string> item_type;
  typedef std::map<std::string,item_type> item_map_type;

  // group, items, comment
  typedef std::tr1::tuple<std::string,item_map_type,std::string> group_type;
  typedef std::map<std::string,group_type> group_map_type;

  const keyfile::group_type *
  keyfile::find_group(const std::string& group) const;

  group_type *found_group = find_group(group);
  [should be "const group_type *".]

This made me wonder: why can't the compiler just use the typedef'd
names which are actually readable?  The above error is far less than
readable, and had the error not been trivial, it would have taken a
significant amount of head scratching before I found the problem.

Are there any tools around which can help with this?  What do other
folks do in the face of errors like this?


Regards,
Roger

- -- 
Roger Leigh
                Printing on GNU/Linux?  http://gimp-print.sourceforge.net/
                Debian GNU/Linux        http://www.debian.org/
                GPG Public Key: 0x25BFB848.  Please sign and encrypt your mail.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Processed by Mailcrypt 3.5.8+ <http://mailcrypt.sourceforge.net/>

iD8DBQFDqaWcVcFcaSW/uEgRAnQXAJ9Z810ZqaG5LEHb86fWDPbPQ9fhPgCePrRD
frOxxT1nX2us43I5iWlHizA=
=dOfz
-----END PGP SIGNATURE-----
_______________________________________________
Help-gplusplus mailing list
Help-gplusplus@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to