Emil Dotchevski | 4 Sep 03:50

BOOST_CURRENT_FUNCTION

It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on sun-5.7,
sun-5.8 and sun-5.9, I'm looking at
http://www.boost.org/development/tests/trunk/developer/output/Sandia-sun-boost-bin-v2-libs-exception-test-diagnostic_information_test-test-sun-5-7-debug.html.

Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that compiler?

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

John Maddock | 4 Sep 10:24

Re: BOOST_CURRENT_FUNCTION

Emil Dotchevski wrote:
>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on
>> sun-5.7, sun-5.8 and sun-5.9, I'm looking at
>> http://www.boost.org/development/tests/trunk/developer/output/Sandia-sun-boost-bin-v2-libs-exception-test-diagnostic_information_test-test-sun-5-7-debug.html.
>>
>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that
>> compiler?

Not possible I suspect: it relies on the compiler supporting the 
non-standard __function__ symbol.

John. 

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Emil Dotchevski | 4 Sep 19:08

Re: BOOST_CURRENT_FUNCTION

On Thu, Sep 4, 2008 at 1:24 AM, John Maddock <john <at> johnmaddock.co.uk> wrote:
> Emil Dotchevski wrote:
>>>
>>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on
>>> sun-5.7, sun-5.8 and sun-5.9, I'm looking at
>>>
>>> http://www.boost.org/development/tests/trunk/developer/output/Sandia-sun-boost-bin-v2-libs-exception-test-diagnostic_information_test-test-sun-5-7-debug.html.
>>>
>>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that
>>> compiler?
>
> Not possible I suspect: it relies on the compiler supporting the
> non-standard __function__ symbol.

Well, current_function.hpp has support for many compilers, using
whatever implementation-specific symbol is available. I can see that
it doesn't specifically address the Sun compiler.

Could someone with access to that compiler take a look?

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Simon Atanasyan | 5 Sep 21:16

Re: BOOST_CURRENT_FUNCTION

On Thu, Sep 4, 2008 at 9:08 PM, Emil Dotchevski <emil <at> revergestudios.com> wrote:
> On Thu, Sep 4, 2008 at 1:24 AM, John Maddock <john <at> johnmaddock.co.uk> wrote:
>> Emil Dotchevski wrote:
>>>>
>>>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on
>>>> sun-5.7, sun-5.8 and sun-5.9, I'm looking at
>>>>
>>>> http://www.boost.org/development/tests/trunk/developer/output/Sandia-sun-boost-bin-v2-libs-exception-test-diagnostic_information_test-test-sun-5-7-debug.html.
>>>>
>>>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that
>>>> compiler?
>>
>> Not possible I suspect: it relies on the compiler supporting the
>> non-standard __function__ symbol.
>
> Well, current_function.hpp has support for many compilers, using
> whatever implementation-specific symbol is available. I can see that
> it doesn't specifically address the Sun compiler.
>
> Could someone with access to that compiler take a look?

Sun C++ supports __func__ under -features=extensions command line option.

--

-- 
Simon Atanasyan
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Emil Dotchevski | 5 Sep 22:06

Re: BOOST_CURRENT_FUNCTION

On Fri, Sep 5, 2008 at 12:16 PM, Simon Atanasyan <atanasyan <at> gmail.com> wrote:
>> Could someone with access to that compiler take a look?
> Sun C++ supports __func__ under -features=extensions command line option.

That's cool but we still need someone with access to that compiler to
modify current_function.hpp and test it.

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Chris Knight | 5 Sep 22:26

Re: BOOST_CURRENT_FUNCTION

On Friday 05 September 2008 3:06:27 pm Emil Dotchevski wrote:
> On Fri, Sep 5, 2008 at 12:16 PM, Simon Atanasyan <atanasyan <at> gmail.com> 
wrote:
> >> Could someone with access to that compiler take a look?
> >
> > Sun C++ supports __func__ under -features=extensions command line option.
>
> That's cool but we still need someone with access to that compiler to
> modify current_function.hpp and test it.
>
> Emil Dotchevski
> Reverge Studios, Inc.
> http://www.revergestudios.com/reblog/index.php?n=ReCode
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost

(Un)Luckily I have been spending all day building boost 1.36 using sun studio 
express Jul2008. I have the ability to apply/generate hot fix patch files so 
I'll simply add this patch to my list and post my results shortly. 

I gues this is as good as ever to mention a few major problems with building 
boost using sun studio. 

>From the CC man page:
          The -fast macro expands into compilation options that
          may affect other specified options. For example, in the
          following command, the expansion of the -fast macro
          includes -xtarget=native which reverts -xarch to one of
          the 32-bit architecture options.
(Continue reading)

Jurko Gospodnetić | 5 Sep 23:36

Re: BOOST_CURRENT_FUNCTION [Boost Build updates]

   Hi Chris.

> I gues this is as good as ever to mention a few major problems with building 
> boost using sun studio. 
> 
>>From the CC man page:
>           The -fast macro expands into compilation options that
>           may affect other specified options. For example, in the
>           following command, the expansion of the -fast macro
>           includes -xtarget=native which reverts -xarch to one of
>           the 32-bit architecture options.
> 
>           Incorrect:
>           example% CC -xarch=v9 -fast test.cc
> 
>           Correct:
>           example% CC -fast -xarch=v9 test.cc
> 
> sun.jam apparently has no way of controlling the order in which address-model, 
> cxxflags, optimization and the various other options are assembled into the 
> final command. This results in garbage binaries. 
> 
> My temporary solution was to remove all compiler options from sun.jam and to 
> simply pass in cxxflags in its entirety to bjam. This is obviously not ideal. 
> 
> A better solution would be to ensure the CC command that is generated is in 
> the order:
> 	<threading> <stlport> <debug-symbols> <optimization> <address-model> 
> <cxxflags>
> thereby allowing the user to pass in a cxxflags that provides the 
(Continue reading)

Chris Knight | 7 Sep 02:53

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Friday 05 September 2008 4:36:30 pm Jurko Gospodnetić wrote:
>    Hi Chris.
>
> > I gues this is as good as ever to mention a few major problems with
> > building boost using sun studio.
> >
> >>From the CC man page:
> >
> >           The -fast macro expands into compilation options that
> >           may affect other specified options. For example, in the
> >           following command, the expansion of the -fast macro
> >           includes -xtarget=native which reverts -xarch to one of
> >           the 32-bit architecture options.
> >
> >           Incorrect:
> >           example% CC -xarch=v9 -fast test.cc
> >
> >           Correct:
> >           example% CC -fast -xarch=v9 test.cc
> >
> > sun.jam apparently has no way of controlling the order in which
> > address-model, cxxflags, optimization and the various other options are
> > assembled into the final command. This results in garbage binaries.
> >
> > My temporary solution was to remove all compiler options from sun.jam and
> > to simply pass in cxxflags in its entirety to bjam. This is obviously not
> > ideal.
> >
> > A better solution would be to ensure the CC command that is generated is
> > in the order:
(Continue reading)

Emil Dotchevski | 7 Sep 20:35

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Sat, Sep 6, 2008 at 5:53 PM, Chris Knight <cknite <at> gmail.com> wrote:
> On Friday 05 September 2008 4:36:30 pm Jurko Gospodnetić wrote:
> Also included is a small fix to exception/enable_current_exception.hpp to
> compile under studio. This sun.jam file also apparently fixes the compilation
> issues with 1.36 and libserialization. Tested w/ Studio 12 and Studio Express
> Jul-2008.

There is an issue with the enable_current_exception part of the patch.
The constructor you have marked as throw() is not a copy constructor
and may indeed throw. There is not, and can not be, a requirement that
exceptions constructors don't throw, only the copy constructor is
required to be nothrow. In that type, the copy constructor is
generated by the compiler. If you're getting errors, they might be due
to passing a non-compliant type to enable_current_exception. Can you
post a log file with the errors?

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Chris Knight | 8 Sep 11:24

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Sunday 07 September 2008 1:35:03 pm Emil Dotchevski wrote:

> On Sat, Sep 6, 2008 at 5:53 PM, Chris Knight <cknite <at> gmail.com> wrote:

> > On Friday 05 September 2008 4:36:30 pm Jurko Gospodnetić wrote:

> > Also included is a small fix to exception/enable_current_exception.hpp to

> > compile under studio. This sun.jam file also apparently fixes the

> > compilation issues with 1.36 and libserialization. Tested w/ Studio 12

> > and Studio Express Jul-2008.

>

> There is an issue with the enable_current_exception part of the patch.

> The constructor you have marked as throw() is not a copy constructor

> and may indeed throw. There is not, and can not be, a requirement that

> exceptions constructors don't throw, only the copy constructor is

> required to be nothrow. In that type, the copy constructor is

> generated by the compiler. If you're getting errors, they might be due

> to passing a non-compliant type to enable_current_exception. Can you

> post a log file with the errors?

Ahh, sorry. I added the throw () to the constructor by mistake. The defined destructor is supplied otherwise the warnings in exceptions.warn are generated. The other option is to add "wlessrestrictedthrow" to the -erroff argument passed to the compiler. Supplying the destructor is slightly better in that it does not require modification to the command line used to compile any file using current_enable_exception.hpp directly or otherwise to get rid of the warnings.

Also, I removed several warning disablements from sun.jam as they were still missing the warnings on wave. The correct addition would be "uninitialized" as seen in the wave.warn file. However, this may be overkill as it is the only module that generates any warnings with the much shorter -erroff.

Chris

"./boost/exception/enable_current_exception.hpp", line 127: Warning, wlessrestrictedthrow:
Function
boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::archive_exception>>::~exception_clone()
can throw only the exceptions thrown by the function
boost::exception_detail::error_info_injector<boost::archive::archive_exception>::~error_info_injector()
it overrides.
"./boost/exception/enable_current_exception.hpp", line 136:     Where, temwhilespec: While
specializing "boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::archive_exception>>".
"./boost/exception/enable_current_exception.hpp", line 136:     Where, teminstfrom: Instantiated
from boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>::indent().
"libs/serialization/src/xml_oarchive.cpp", line 26:     Where, teminstend: Instantiated from
non-template code.
"./boost/exception/enable_current_exception.hpp", line 127: Warning, wlessrestrictedthrow:
Function
boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::archive_exception>>::~exception_clone()
can throw only the exceptions thrown by the function std::exception::~exception() it overrides.
"./boost/exception/enable_current_exception.hpp", line 136:     Where, temwhilespec: While
specializing "boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::archive_exception>>".
"./boost/exception/enable_current_exception.hpp", line 136:     Where, teminstfrom: Instantiated
from boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>::indent().
"libs/serialization/src/xml_oarchive.cpp", line 26:     Where, teminstend: Instantiated from
non-template code.
"./boost/exception/enable_current_exception.hpp", line 127: Warning, wlessrestrictedthrow:
Function
boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>::~exception_clone()
can throw only the exceptions thrown by the function
boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>::~error_info_injector()
it overrides.
"./boost/exception/enable_current_exception.hpp", line 136:     Where, temwhilespec: While
specializing "boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>".
"./boost/exception/enable_current_exception.hpp", line 136:     Where, teminstfrom: Instantiated
from boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>::save_start(const char*).
"libs/serialization/src/xml_oarchive.cpp", line 26:     Where, teminstend: Instantiated from
non-template code.
"./boost/exception/enable_current_exception.hpp", line 127: Warning, wlessrestrictedthrow:
Function
boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>::~exception_clone()
can throw only the exceptions thrown by the function std::exception::~exception() it overrides.
"./boost/exception/enable_current_exception.hpp", line 136:     Where, temwhilespec: While
specializing "boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>".
"./boost/exception/enable_current_exception.hpp", line 136:     Where, teminstfrom: Instantiated
from boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>::save_start(const char*).
"libs/serialization/src/xml_oarchive.cpp", line 26:     Where, teminstend: Instantiated from
non-template code.
"./boost/exception/enable_current_exception.hpp", line 127: Warning, wlessrestrictedthrow:
Function
boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>::~exception_clone()
can throw only the exceptions thrown by the function
boost::archive::archive_exception::~archive_exception() it overrides.
"./boost/exception/enable_current_exception.hpp", line 136:     Where, temwhilespec: While
specializing "boost::exception_detail::exception_clone<boost::exception_detail::error_info_injector<boost::archive::xml_archive_exception>>".
"./boost/exception/enable_current_exception.hpp", line 136:     Where, teminstfrom: Instantiated
from boost::archive::basic_xml_oarchive<boost::archive::xml_oarchive>::save_start(const char*).
"libs/serialization/src/xml_oarchive.cpp", line 26:     Where, teminstend: Instantiated from
non-template code.
5 Warning(s) detected.
"./boost/spirit/home/classic/core/non_terminal/impl/subrule.ipp", line 200: Warning,
unassigned: The variable same_id has not yet been assigned a value.
"./boost/spirit/home/classic/core/non_terminal/subrule.hpp", line 262:     Where, temwhileinst:
While instantiating "static
boost::spirit::classic::impl::parse_subrule<boost::spirit::classic::match<boost::spirit::classic::nil_t>,
boost::spirit::classic::subrules_scanner<boost::spirit::classic::scanner<const char*,
boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
boost::spirit::classic::match_policy, boost::spirit::classic::action_policy>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<0,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::sequence<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::value<int>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::alternative<boost::spirit::classic::subrule<2,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule<1,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>>,
boost::spirit::classic::subrule<3,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>,
boost::spirit::classic::optional<boost::spirit::classic::inhibit_case<boost::spirit::classic::alternative<boost::spirit::classic::sequential_or<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::sequential_or<boost::spirit::classic::chlit<char>,
boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<3,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 10, 1, -1>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<1,
boost::spirit::classic::optional<boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned
long, 8, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<2,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::chlit<char>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 16, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::nil_t>>>>>,
2>::do_(boost::spirit::classic::match<boost::spirit::classic::nil_t>&, const
boost::spirit::classic::subrules_scanner<boost::spirit::classic::scanner<const char*,
boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
boost::spirit::classic::match_policy, boost::spirit::classic::action_policy>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<0,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::sequence<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::value<int>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::alternative<boost::spirit::classic::subrule<2,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule<1,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>>,
boost::spirit::classic::subrule<3,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>,
boost::spirit::classic::optional<boost::spirit::classic::inhibit_case<boost::spirit::classic::alternative<boost::spirit::classic::sequential_or<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::sequential_or<boost::spirit::classic::chlit<char>,
boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<3,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 10, 1, -1>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<1,
boost::spirit::classic::optional<boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned
long, 8, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<2,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::chlit<char>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 16, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>, boost::spirit::classic::nil_t>>>>>&)".
"./boost/spirit/home/classic/core/non_terminal/subrule.hpp", line 262:     Where, teminstfrom:
Instantiated from boost::spirit::classic::subrule<2,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>::parse_main<boost::spirit::classic::subrules_scanner<boost::spirit::classic::scanner<const
char*, boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
boost::spirit::classic::match_policy, boost::spirit::classic::action_policy>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<0,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::sequence<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::value<int>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::alternative<boost::spirit::classic::subrule<2,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule<1,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>>,
boost::spirit::classic::subrule<3,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>,
boost::spirit::classic::optional<boost::spirit::classic::inhibit_case<boost::spirit::classic::alternative<boost::spirit::classic::sequential_or<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::sequential_or<boost::spirit::classic::chlit<char>,
boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<3,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 10, 1, -1>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<1,
boost::spirit::classic::optional<boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned
long, 8, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<2,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::chlit<char>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 16, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::nil_t>>>>>>(const
boost::spirit::classic::subrules_scanner<boost::spirit::classic::scanner<const char*,
boost::spirit::classic::scanner_policies<boost::spirit::classic::iteration_policy,
boost::spirit::classic::match_policy, boost::spirit::classic::action_policy>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<0,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::sequence<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::value<int>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::alternative<boost::spirit::classic::subrule<2,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule<1,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>>,
boost::spirit::classic::subrule<3,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>>,
boost::spirit::classic::optional<boost::spirit::classic::inhibit_case<boost::spirit::classic::alternative<boost::spirit::classic::sequential_or<boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::sequential_or<boost::spirit::classic::chlit<char>,
boost::spirit::classic::action<boost::spirit::classic::chlit<char>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<3,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 10, 1, -1>,
phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<1,
boost::spirit::classic::optional<boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned
long, 8, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::subrule_list<boost::spirit::classic::subrule_parser<2,
boost::spirit::classic::sequence<boost::spirit::classic::alternative<boost::spirit::classic::chlit<char>,
boost::spirit::classic::chlit<char>>,
boost::spirit::classic::action<boost::spirit::classic::uint_parser<unsigned long, 16, 1, -1>,
phoenix::actor<phoenix::sequential_composite<phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::closure_member<0, phoenix::closure<unsigned long, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>,
phoenix::actor<phoenix::argument<0>>, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t,
phoenix::nil_t, phoenix::nil_t>>, phoenix::actor<phoenix::composite<phoenix::assign_op,
phoenix::actor<phoenix::variable<bool>>, phoenix::actor<phoenix::value<bool>>,
phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t, phoenix::nil_t>>>>>>,
boost::spirit::classic::parser_context<boost::spirit::classic::nil_t>>,
boost::spirit::classic::nil_t>>>>>&) const.
"./boost/spirit/home/classic/core/non_terminal/subrule.hpp", line 274:     Where, teminstfrom:
Instantiated from static
boost::wave::grammars::intlit_grammar_gen<boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char,
std::char_traits<char>, std::allocator<char>,
boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char,
std::allocator<char>>, char*>>>>>::evaluate(const
boost::wave::cpplexer::lex_token<boost::wave::util::file_position<boost::wave::util::flex_string<char,
std::char_traits<char>, std::allocator<char>,
boost::wave::util::CowString<boost::wave::util::AllocatorStringStorage<char,
std::allocator<char>>, char*>>>>&, bool&).
"libs/wave/src/instantiate_cpp_literalgrs.cpp", line 40:     Where, teminstend: Instantiated from
non-template code.
4 Warning(s) detected.
sun.compile.c++ bin.v2/libs/wave/build/sun/release/link-static/optimization-off/stdlib-sun-stlport/threading-multi/instantiate_defined_grammar.o
Attachment (patch-1_36_0.diff): text/x-diff, 5353 bytes
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
Emil Dotchevski | 8 Sep 18:36

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

2008/9/8 Chris Knight <cknite <at> gmail.com>:
> Ahh, sorry. I added the throw () to the constructor by mistake. The defined
> destructor is supplied otherwise the warnings in exceptions.warn are
> generated.

Yes, marking that destructor as throw() is a good idea, the trunk
version already had these warnings fixed.

Thanks!

Emil Dotchevski
Reverge Studios, Inc.
http://www.revergestudios.com/reblog/index.php?n=ReCode
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Chris Knight | 9 Sep 20:26

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Monday 08 September 2008 11:36:38 am Emil Dotchevski wrote:
> 2008/9/8 Chris Knight <cknite <at> gmail.com>:
> > Ahh, sorry. I added the throw () to the constructor by mistake. The
> > defined destructor is supplied otherwise the warnings in exceptions.warn
> > are generated.
>
> Yes, marking that destructor as throw() is a good idea, the trunk
> version already had these warnings fixed.
>
> Thanks!

Awesome.
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Chris Knight | 9 Sep 20:31

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Monday 08 September 2008 4:24:42 am Chris Knight wrote:
> On Sunday 07 September 2008 1:35:03 pm Emil Dotchevski wrote:
> > On Sat, Sep 6, 2008 at 5:53 PM, Chris Knight <cknite <at> gmail.com> wrote:
> > > On Friday 05 September 2008 4:36:30 pm Jurko Gospodnetić wrote:
> > > Also included is a small fix to exception/enable_current_exception.hpp
> > > to compile under studio. This sun.jam file also apparently fixes the
> > > compilation issues with 1.36 and libserialization. Tested w/ Studio 12
> > > and Studio Express Jul-2008.
> >
> > There is an issue with the enable_current_exception part of the patch.
> > The constructor you have marked as throw() is not a copy constructor
> > and may indeed throw. There is not, and can not be, a requirement that
> > exceptions constructors don't throw, only the copy constructor is
> > required to be nothrow. In that type, the copy constructor is
> > generated by the compiler. If you're getting errors, they might be due
> > to passing a non-compliant type to enable_current_exception. Can you
> > post a log file with the errors?
>
> Ahh, sorry. I added the throw () to the constructor by mistake. The defined
> destructor is supplied otherwise the warnings in exceptions.warn are
> generated. The other option is to add "wlessrestrictedthrow" to the -erroff
> argument passed to the compiler. Supplying the destructor is slightly
> better in that it does not require modification to the command line used to
> compile any file using current_enable_exception.hpp directly or otherwise
> to get rid of the warnings.
>
> Also, I removed several warning disablements from sun.jam as they were
> still missing the warnings on wave. The correct addition would be
> "uninitialized" as seen in the wave.warn file. However, this may be
> overkill as it is the only module that generates any warnings with the much
> shorter -erroff.

Attached is an updated sun.jam patch that also fixes static builds.

Thanks,
Chris
Attachment (patch-1_36_0.diff): text/x-diff, 5704 bytes
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
Chris Knight | 16 Sep 20:47

Re: [boost] BOOST_CURRENT_FUNCTION [Boost Build updates]

On Tuesday 09 September 2008 1:31:09 pm Chris Knight wrote:
> > Also, I removed several warning disablements from sun.jam as they were
> > still missing the warnings on wave. The correct addition would be
> > "uninitialized" as seen in the wave.warn file. However, this may be
> > overkill as it is the only module that generates any warnings with the
> > much shorter -erroff.
>
> Attached is an updated sun.jam patch that also fixes static builds.
>
> Thanks,
> Chris

What's the process involved in having this patch applied to the tree? I'd love 
to see boost 1.37 build out of the box w/ studio. :-)

Thanks,
Chris
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build

Bo Schwarzstein | 10 Sep 04:04
Favicon

compile regex failed

Hi everybody,
 
    Is there anybody have compiled the 1.36 regex library successfully ? I tried but always report me error, but 1.35 and 1.34 is ok, I do not know whether this is a problem about code or my compilers, VC8 without SP1.
    Thanks !
 
Bo Schwarzstein,zhoubo22 <at> hotmail.com
2008-09-10
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
Jurko Gospodnetić | 10 Sep 17:39

Re: compile regex failed

   Hi Bo.

>     Is there anybody have compiled the 1.36 regex library successfully ? 
> I tried but always report me error, but 1.35 and 1.34 is ok, I do not 
> know whether this is a problem about code or my compilers, VC8 without SP1.

   Yup. There are those that have compiled the Boost Regex libarary 
contained in the Boost library 1.36.0 release successfully.

   For any more help, I guess you'll really need to provide a failing 
use case and/or other more detailed information on your problem.

   Best regards,
     Jurko Gospodnetić

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
Chris Knight | 5 Sep 23:00

Re: BOOST_CURRENT_FUNCTION

On Friday 05 September 2008 3:06:27 pm Emil Dotchevski wrote:
> On Fri, Sep 5, 2008 at 12:16 PM, Simon Atanasyan <atanasyan <at> gmail.com> 
wrote:
> >> Could someone with access to that compiler take a look?
> >
> > Sun C++ supports __func__ under -features=extensions command line option.
>
> That's cool but we still need someone with access to that compiler to
> modify current_function.hpp and test it.

__func__ does work when supplied with -features=extensions in express 
Jul-2008, Feb-2008 and 12. Since these are the only versions that have any 
chance whatsoever of building boost it's a pretty safe change however it will 
require changes to sun.jam to add that command line option to cxxflags.

Chris
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Peter Dimov | 4 Sep 20:03

Re: BOOST_CURRENT_FUNCTION on Sun C++

Emil Dotchevski:

> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on sun-5.7,
> sun-5.8 and sun-5.9, ...
>
> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that compiler?

Google tells me that __func__ might work on some Sun C++ versions, but I 
don't have access to the compiler and can't check. :-) 

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Simon Atanasyan | 5 Sep 21:16

Re: BOOST_CURRENT_FUNCTION on Sun C++

On Thu, Sep 4, 2008 at 10:03 PM, Peter Dimov <pdimov <at> pdimov.com> wrote:
> Emil Dotchevski:
>
>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on sun-5.7,
>> sun-5.8 and sun-5.9, ...
>>
>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that compiler?
>
> Google tells me that __func__ might work on some Sun C++ versions, but I
> don't have access to the compiler and can't check. :-)

Sun C++ supports __func__ under -features=extensions command line option.

--

-- 
Simon Atanasyan
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Peter Dimov | 5 Sep 23:48

Re: BOOST_CURRENT_FUNCTION on Sun C++

Simon Atanasyan:
> On Thu, Sep 4, 2008 at 10:03 PM, Peter Dimov <pdimov <at> pdimov.com> wrote:
>> Emil Dotchevski:
>>
>>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on sun-5.7,
>>> sun-5.8 and sun-5.9, ...
>>>
>>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that 
>>> compiler?
>>
>> Google tells me that __func__ might work on some Sun C++ versions, but I
>> don't have access to the compiler and can't check. :-)
>
> Sun C++ supports __func__ under -features=extensions command line option.

Is there a way to detect that -features=extensions is in effect and __func__ 
is supported? Does -features=extensions define a corresponding macro, or if 
it doesn't, is __func__ itself detectable via #ifdef __func__? 

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Chris Knight | 6 Sep 00:00

Re: BOOST_CURRENT_FUNCTION on Sun C++

On Friday 05 September 2008 4:48:07 pm Peter Dimov wrote:
> Simon Atanasyan:
> > On Thu, Sep 4, 2008 at 10:03 PM, Peter Dimov <pdimov <at> pdimov.com> wrote:
> >> Emil Dotchevski:
> >>> It appears that BOOST_CURRENT_FUNCTION returns '(unknown)' on sun-5.7,
> >>> sun-5.8 and sun-5.9, ...
> >>>
> >>> Is this a bug, or is BOOST_CURRENT_FUNCTION not possible on that
> >>> compiler?
> >>
> >> Google tells me that __func__ might work on some Sun C++ versions, but I
> >> don't have access to the compiler and can't check. :-)
> >
> > Sun C++ supports __func__ under -features=extensions command line option.
>
> Is there a way to detect that -features=extensions is in effect and
> __func__ is supported? Does -features=extensions define a corresponding
> macro, or if it doesn't, is __func__ itself detectable via #ifdef __func__?

I can't find any way documented or otherwise. It appears to enable the 
acceptance of __func__ somewhere in the lex/parse stage and does not enable 
any corresponding macro. The only way I can think of involves the standard 
compiles/fails approach.

Chris
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Simon Atanasyan | 6 Sep 11:07

Re: BOOST_CURRENT_FUNCTION on Sun C++

On Sat, Sep 6, 2008 at 1:48 AM, Peter Dimov <pdimov <at> pdimov.com> wrote:
> Is there a way to detect that -features=extensions is in effect and __func__
> is supported? Does -features=extensions define a corresponding macro, or if
> it doesn't, is __func__ itself detectable via #ifdef __func__?

There is no (even undocumented) way to detect this.

--

-- 
Simon Atanasyan
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


Gmane