Bug 477131

Summary: boost/function.hpp and -fno-exceptions craps out
Product: [Fedora] Fedora Reporter: Caolan McNamara <caolanm>
Component: boostAssignee: Benjamin Kosnik <bkoz>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: bkoz, mnewsome, pmachata
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-12-19 15:11:18 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
trivial test-case
none
Heres a fix to the header none

Description Caolan McNamara 2008-12-19 10:29:54 UTC
Created attachment 327426 [details]
trivial test-case

On F-10

g++ test.cxx
g++ -fno-exceptions test.cxx

works fine

on rawhide now

g++ test.cxx
works, but
g++ -fno-exceptions test.cxx
will crap out with 

In file included from /usr/include/boost/function/detail/maybe_include.hpp:13,
                 from /usr/include/boost/function/detail/function_iterate.hpp:14,
                 from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:47,
                 from /usr/include/boost/function.hpp:64,
                 from test.cxx:1:
/usr/include/boost/function/function_template.hpp:965: error: declaration of ‘class R’
/usr/include/boost/function/function_template.hpp:652: error:  shadows template parm ‘class R’
/usr/include/boost/function/function_template.hpp:979: error: declaration of ‘class R’
/usr/include/boost/function/function_template.hpp:652: error:  shadows template parm ‘class R’
/usr/include/boost/function/function_template.hpp:983: error: invalid use of incomplete type ‘class boost::function0<R>’
/usr/include/boost/function/function_template.hpp:667: error: declaration of ‘class boost::function0<R>’
/usr/include/boost/function/function_template.hpp:994: error: declaration of ‘class R’
/usr/include/boost/function/function_template.hpp:652: error:  shadows template parm ‘class R’
/usr/include/boost/function/function_template.hpp:1000: error: ‘void boost::function0<R>::operator==(const boost::function0<R>&, const boost::function0<R>&)’ must take exactly one argument
/usr/include/boost/function/function_template.hpp:1001: error: declaration of ‘class R’
/usr/include/boost/function/function_template.hpp:652: error:  shadows template parm ‘class R’
/usr/include/boost/function/function_template.hpp:1007: error: ‘void boost::function0<R>::operator!=(const boost::function0<R>&, const boost::function0<R>&)’ must take exactly one argument
/usr/include/boost/function/function_template.hpp:1017: error: declaration of ‘class R’
/usr/include/boost/function/function_template.hpp:652: error:  shadows template parm ‘class R’
/usr/include/boost/function/function_template.hpp:1025: error: ‘struct boost::function<R ()()>::clear_type’ redeclared with different access
/usr/include/boost/function/function_template.hpp:1098: error: ‘class boost::function<R ()()>’ redeclared with different access
In file included from /usr/include/boost/function/detail/maybe_include.hpp:18,
                 from /usr/include/boost/function/detail/function_iterate.hpp:14,
                 from /usr/include/boost/preprocessor/iteration/detail/iter/forward1.hpp:52,
                 from /usr/include/boost/function.hpp:64,
                 from test.cxx:1:
/usr/include/boost/function/function_template.hpp:80: error: expected unqualified-id before ‘namespace’
test.cxx:6: error: expected `}' at end of input

Comment 1 Caolan McNamara 2008-12-19 10:35:55 UTC
Created attachment 327427 [details]
Heres a fix to the header

Here's a fix to the broken header. Just looks like a bad placement of the ifdef

Comment 2 Petr Machata 2008-12-19 15:11:18 UTC
Fixed in rawhide.  Thanks for the patch.