boost.exception errors
Hi, I've used the boost.exception from svn (Revision 44352) and got the compile errors: $ LANG=en g++ -I ../../3rd_party/boost-svn/ -Wall eh.cpp -o eh && ./eh ../../3rd_party/boost-svn/boost/exception/info.hpp: In function 'boost::shared_ptr<const typename ErrorInfo::value_type> boost::get_error_info(const E&) [with ErrorInfo = boost::error_info<boost::tag_throw_function, const char*>, E = boost::exception]': eh.cpp:21: instantiated from here ../../boost-svn/boost/exception/info.hpp:104: error: no matching function for call to 'boost::shared_ptr<const char* const>::shared_ptr(boost::shared_ptr<const boost::exception_detail::error_info_base>&, const char* const*)' /usr/include/boost/shared_ptr.hpp:144: note: candidates are: boost::shared_ptr<T>::shared_ptr() [with T = const char* const] /usr/include/boost/shared_ptr.hpp:131: note: boost::shared_ptr<const char* const>::shared_ptr(const boost::shared_ptr<const char* const>&) from this file: #include <boost/exception/exception.hpp> #include <boost/exception/info_tuple.hpp> #include <boost/exception/info.hpp> #include <exception> #include <boost/shared_ptr.hpp> #include <iostream> struct test_exception : boost::exception {}; int main() { try { throw test_exception() << BOOST_ERROR_INFO ; } catch( const boost::exception& e ) { using namespace boost; std::cerr << "Caught exception:\n" << e.what() << "\n"; shared_ptr<const char * const> function = get_error_info<throw_function>( e ); // shared_ptr<const char * const> file = get_error_info<throw_file>( e ); // shared_ptr<int* const> line = get_error_info<throw_line>( e ); // std::cerr << " in " << file << "(" << line << "): " << function << std::endl; } } BTW, the example_io.cpp doesn't compile too. Do I have to use the complete svn trunk? Thanks, Olaf
I think the problem is that you're missing the aliasing support in shared_ptr which was added to the boost trunk at revision 37402 and is used by Boost Exception. -- Emil Dotchevski Reverge Studios, Inc. http://www.revergestudios.com/reblog/index.php?n=ReCode On Sat, Apr 12, 2008 at 11:25 AM, Olaf Peter <ope-devel@gmx.de> wrote:
Hi,
I've used the boost.exception from svn (Revision 44352) and got the compile errors:
$ LANG=en g++ -I ../../3rd_party/boost-svn/ -Wall eh.cpp -o eh && ./eh ../../3rd_party/boost-svn/boost/exception/info.hpp: In function 'boost::shared_ptr<const typename ErrorInfo::value_type> boost::get_error_info(const E&) [with ErrorInfo = boost::error_info<boost::tag_throw_function, const char*>, E = boost::exception]': eh.cpp:21: instantiated from here ../../boost-svn/boost/exception/info.hpp:104: error: no matching function for call to 'boost::shared_ptr<const char* const>::shared_ptr(boost::shared_ptr<const boost::exception_detail::error_info_base>&, const char* const*)' /usr/include/boost/shared_ptr.hpp:144: note: candidates are: boost::shared_ptr<T>::shared_ptr() [with T = const char* const] /usr/include/boost/shared_ptr.hpp:131: note: boost::shared_ptr<const char* const>::shared_ptr(const boost::shared_ptr<const char* const>&)
from this file:
#include <boost/exception/exception.hpp> #include <boost/exception/info_tuple.hpp> #include <boost/exception/info.hpp> #include <exception> #include <boost/shared_ptr.hpp>
#include <iostream>
struct test_exception : boost::exception {};
int main() { try { throw test_exception() << BOOST_ERROR_INFO ; } catch( const boost::exception& e ) { using namespace boost; std::cerr << "Caught exception:\n" << e.what() << "\n"; shared_ptr<const char * const> function = get_error_info<throw_function>( e ); // shared_ptr<const char * const> file = get_error_info<throw_file>( e ); // shared_ptr<int* const> line = get_error_info<throw_line>( e ); // std::cerr << " in " << file << "(" << line << "): " << function << std::endl; } }
BTW, the example_io.cpp doesn't compile too. Do I have to use the complete svn trunk?
Thanks, Olaf _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (2)
-
Emil Dotchevski
-
Olaf Peter