Terje Slettebų <[EMAIL PROTECTED]> writes: >>From: "Gennaro Prota" <[EMAIL PROTECTED]> > >> On Sat, 22 Mar 2003 09:52:07 -0500, David Abrahams >> <[EMAIL PROTECTED]> wrote: >> >> >Kevlin Henney <[EMAIL PROTECTED]> writes: >> >> >> However, the decision as to whether this should be in the 'what' string >> >> is perhaps one that can be revisited. It would be feasible to avoid any >> >> allocation issues at all by leaving the human readable string as > general >> >> as it was before and adding type_info members that described the source >> >> and target types. >> > >> >Yes, that was my suggestion. >> >> I'm happy that std::type_info has a private copy constructor. Hadn't >> it been for that, my suggestion to use just a couple of typedefs would >> have been routinely rejected :-) > > Storing a couple of type members is not enough, by itself. How would a > catch-clause taking e.g. a reference to bad_lexical_cast access them? To > access the typedefs, you need to know the exact type thrown, which means you > need to know the types to begin with...
There's absolutely no reason I can see to make the exact exception type depend on the types concerned. Just use a straightforward class, something along the lines of: struct bad_lexical_cast : std::exception { bad_lexical_cast( std::type_info const& src, std::type_info const& dst) : m_src(src), m_dst(dst) {} char const* what() throw() { return "bad_lexical_cast"; } std::type_info const& src() const { return m_src; } std::type_info const& dst() const { return m_dst; } private: std::type_info const& src; std::type_info const& dst; }; -- Dave Abrahams Boost Consulting www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost