Subject: [Boost-bugs] [Boost C++ Libraries] #4372: spirit::info violates STL container requirements
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2010-06-24 12:14:29
#4372: spirit::info violates STL container requirements
----------------------------------+-----------------------------------------
Reporter: andysem | Owner: hkaiser
Type: Bugs | Status: new
Milestone: Boost 1.44.0 | Component: spirit
Version: Boost Release Branch | Severity: Showstopper
Keywords: |
----------------------------------+-----------------------------------------
The spirit::info class contains member value which is a variant with
std::list< info > as one of the possible values. This requires the
compiler to instantiate std::list on a not-yet-complete type. This breaks
compilation with STLPort, the build log is as follows:
{{{
C:\_Sources\STLPort\stlport\stl/type_traits.h(249) : error C2139:
'boost::spirit::info' : an undefined class is not allowed as an argument
to compiler intrinsic type trait '__has_trivial_constructor'
.\boost/spirit/home/support/info.hpp(30) : see declaration of
'boost::spirit::info'
C:\_Sources\STLPort\stlport\stl/pointers/_tools.h(76) : see
reference to class template instantiation 'stlp_std::__type_traits<_Tp>'
being compiled
with
[
_Tp=boost::spirit::info
]
C:\_Sources\STLPort\stlport\stl/pointers/_list.h(61) : see
reference to class template instantiation
'stlp_std::priv::_StorageType<_Tp>' being compiled
with
[
_Tp=boost::spirit::info
]
.\boost/mpl/sizeof.hpp(27) : see reference to class template
instantiation 'stlp_std::list<_Tp>' being compiled
with
[
_Tp=boost::spirit::info
]
.\boost/mpl/aux_/has_type.hpp(20) : see reference to class
template instantiation 'boost::mpl::sizeof_<T>' being compiled
with
[
T=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/quote.hpp(36) : see reference
to class template instantiation 'boost::mpl::aux::has_type<T>' being
compiled
with
[
T=boost::mpl::sizeof_<stlp_std::list<boost::spirit::info>>
]
.\boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp(39) : see
reference to class template instantiation
'boost::mpl::quote1<F,Tag>::apply<U1>' being compiled
with
[
F=boost::mpl::sizeof_,
Tag=boost::mpl::void_,
U1=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/bind.hpp(144) : see reference
to class template instantiation 'boost::mpl::apply_wrap1<F,T1>' being
compiled
with
[
F=boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,
T1=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp(39) : see
reference to class template instantiation
'boost::mpl::bind1<F,T1>::apply<U1>' being compiled
with
[
F=boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,
T1=boost::mpl::arg<1>,
U1=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/bind.hpp(144) : see reference
to class template instantiation 'boost::mpl::apply_wrap1<F,T1>' being
compiled
with
[
F=boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,
T1=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp(80) : see
reference to class template instantiation
'boost::mpl::bind1<F,T1>::apply<U1,U2,U3,U4,U5>' being compiled
with
[
F=boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,
T1=boost::mpl::_2,
U1=boost::mpl::l_end,
U2=stlp_std::list<boost::spirit::info>,
U3=boost::mpl::na,
U4=boost::mpl::na,
U5=boost::mpl::na
]
.\boost/mpl/aux_/preprocessed/plain/bind.hpp(160) : see reference
to class template instantiation
'boost::mpl::apply_wrap5<F,T1,T2,T3,T4,T5>' being compiled
with
[
F=boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>,
T1=boost::mpl::l_end,
T2=stlp_std::list<boost::spirit::info>,
T3=boost::mpl::na,
T4=boost::mpl::na,
T5=boost::mpl::na
]
.\boost/mpl/aux_/preprocessed/plain/bind.hpp(206) : see reference
to class template instantiation
'boost::mpl::aux::resolve_bind_arg<T,U1,U2,U3,U4,U5>' being compiled
with
[
T=boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>,
U1=boost::mpl::l_end,
U2=stlp_std::list<boost::spirit::info>,
U3=boost::mpl::na,
U4=boost::mpl::na,
U5=boost::mpl::na
]
.\boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp(49) : see
reference to class template instantiation
'boost::mpl::bind2<F,T1,T2>::apply<U1,U2>' being compiled
with
[
F=boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,
T1=boost::mpl::_1,
T2=boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>,
U1=boost::mpl::l_end,
U2=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/apply.hpp(63) : see reference
to class template instantiation 'boost::mpl::apply_wrap2<F,T1,T2>' being
compiled
with
[
F=boost::mpl::bind2<boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,boost::mpl::_1,boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>>,
T1=boost::mpl::l_end,
T2=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp(58) :
see reference to class template instantiation
'boost::mpl::apply2<F,T1,T2>' being compiled
with
[
F=boost::mpl::bind2<boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,boost::mpl::_1,boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>>,
T1=boost::mpl::l_end,
T2=stlp_std::list<boost::spirit::info>
]
.\boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp(181) :
see reference to class template instantiation
'boost::mpl::aux::reverse_fold_impl<N,First,Last,State,BackwardOp,ForwardOp>'
being compiled
with
[
N=1,
First=boost::mpl::l_iter<boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>,
Last=boost::mpl::l_iter<boost::mpl::l_end>,
State=boost::mpl::l_end,
BackwardOp=boost::mpl::bind2<boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,boost::mpl::_1,boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>>,
ForwardOp=boost::mpl::arg<1>
]
.\boost/mpl/reverse_fold.hpp(41) : see reference to class template
instantiation
'boost::mpl::aux::reverse_fold_impl<N,First,Last,State,BackwardOp,ForwardOp>'
being compiled
with
[
N=5,
First=boost::mpl::l_iter<boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>>,
Last=boost::mpl::l_iter<boost::mpl::l_end>,
State=boost::mpl::l_end,
BackwardOp=boost::mpl::bind2<boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,boost::mpl::_1,boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>>,
ForwardOp=boost::mpl::arg<1>
]
.\boost/mpl/transform.hpp(65) : see reference to class template
instantiation 'boost::mpl::reverse_fold<Sequence,State,BackwardOp>' being
compiled
with
[
Sequence=boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>,
State=boost::mpl::l_end,
BackwardOp=boost::mpl::bind2<boost::mpl::lambda<boost::mpl::push_front<boost::mpl::na,boost::mpl::na>>::type,boost::mpl::_1,boost::mpl::bind1<boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::mpl::sizeof_,boost::mpl::void_>,boost::mpl::arg<1>>>,boost::mpl::_2>>
]
.\boost/mpl/transform.hpp(113) : see reference to class template
instantiation 'boost::mpl::aux::reverse_transform1_impl<Seq,Op,In>' being
compiled
with
[
Seq=boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>,
Op=boost::mpl::sizeof_<boost::mpl::_1>,
In=boost::mpl::front_inserter<boost::mpl::clear_impl<boost::mpl::aux::list_tag>::apply<boost::mpl::list5<boost::spirit::info::nil,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::recursive_wrapper<boost::spirit::info>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,stlp_std::list<boost::spirit::info>>>::type>
]
.\boost/variant/variant.hpp(121) : see reference to class template
instantiation 'boost::mpl::transform1<P1,P2>' being compiled
with
[
P1=boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>,
P2=boost::mpl::sizeof_<boost::mpl::_1>
]
.\boost/variant/variant.hpp(233) : see reference to class template
instantiation 'boost::detail::variant::max_value<Sequence,F>' being
compiled
with
[
Sequence=boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>,
F=boost::mpl::sizeof_<boost::mpl::_1>
]
.\boost/variant/variant.hpp(1105) : see reference to class
template instantiation
'boost::detail::variant::make_storage<Types,NeverUsesBackupFlag>' being
compiled
with
[
Types=boost::mpl::l_item<boost::mpl::long_<5>,boost::spirit::info::nil,boost::mpl::l_item<boost::mpl::long_<4>,stlp_std::basic_string<char,stlp_std::char_traits<char>,stlp_std::allocator<char>>,boost::mpl::l_item<boost::mpl::long_<3>,boost::recursive_wrapper<boost::spirit::info>,boost::mpl::l_item<boost::mpl::long_<2>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,boost::mpl::l_item<boost::mpl::long_<1>,stlp_std::list<boost::spirit::info>,boost::mpl::l_end>>>>>,
NeverUsesBackupFlag=boost::variant<boost::spirit::info::nil,boost::spirit::utf8_string,boost::recursive_wrapper<boost::spirit::info>,boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,stlp_std::list<boost::spirit::info>>::has_fallback_type_
]
.\boost/spirit/home/support/info.hpp(69) : see reference to class
template instantiation 'boost::variant<T0_,T1,T2,T3,T4>' being compiled
with
[
T0_=boost::spirit::info::nil,
T1=boost::spirit::utf8_string,
T2=boost::recursive_wrapper<boost::spirit::info>,
T3=boost::recursive_wrapper<stlp_std::pair<boost::spirit::info,boost::spirit::info>>,
T4=stlp_std::list<boost::spirit::info>
]
C:\_Sources\STLPort\stlport\stl/type_traits.h(250) : error C2139:
'boost::spirit::info' : an undefined class is not allowed as an argument
to compiler intrinsic type trait '__has_trivial_copy'
.\boost/spirit/home/support/info.hpp(30) : see declaration of
'boost::spirit::info'
C:\_Sources\STLPort\stlport\stl/type_traits.h(251) : error C2139:
'boost::spirit::info' : an undefined class is not allowed as an argument
to compiler intrinsic type trait '__has_trivial_assign'
.\boost/spirit/home/support/info.hpp(30) : see declaration of
'boost::spirit::info'
C:\_Sources\STLPort\stlport\stl/type_traits.h(252) : error C2139:
'boost::spirit::info' : an undefined class is not allowed as an argument
to compiler intrinsic type trait '__has_trivial_destructor'
.\boost/spirit/home/support/info.hpp(30) : see declaration of
'boost::spirit::info'
C:\_Sources\STLPort\stlport\stl/type_traits.h(253) : error C2139:
'boost::spirit::info' : an undefined class is not allowed as an argument
to compiler intrinsic type trait '__is_pod'
.\boost/spirit/home/support/info.hpp(30) : see declaration of
'boost::spirit::info'
}}}
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/4372> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:03 UTC