2011-07-15 18 views
1

可能性の重複:C++テンプレートのコンパイルエラーを読むのに役立つツールはありますか?

In file included from /usr/include/boost/mpl/set/aux_/iterator.hpp:19:0, 
       from /usr/include/boost/mpl/set/aux_/begin_end_impl.hpp:19, 
       from /usr/include/boost/mpl/set/set0.hpp:29, 
       from /usr/include/boost/parameter/aux_/set.hpp:13, 
       from /usr/include/boost/parameter/parameters.hpp:48, 
       from /usr/include/boost/accumulators/framework/accumulator_set.hpp:19, 
       from /usr/include/boost/accumulators/accumulators.hpp:12, 
       from src/SimMany.cpp:4: 
/usr/include/boost/mpl/has_key.hpp: In instantiation of ‘boost::mpl::has_key<mpl_::arg<1>, mpl_::ar 
g<2> >’: 
/usr/include/boost/mpl/if.hpp:67:11: instantiated from ‘boost::mpl::if_<boost::mpl::has_key<mpl_: 
:arg<1>, mpl_::arg<2> >, boost::mpl::identity<mpl_::arg<1> >, boost::mpl::insert<mpl_::arg<1>, boos 
t::mpl::pair<mpl_::arg<2>, mpl_::arg<2> >, mpl_::na> >’ 
/usr/include/boost/mpl/eval_if.hpp:37:41: instantiated from ‘boost::mpl::eval_if<boost::mpl::has_ 
key<mpl_::arg<1>, mpl_::arg<2> >, boost::mpl::identity<mpl_::arg<1> >, boost::mpl::insert<mpl_::arg 
<1>, boost::mpl::pair<mpl_::arg<2>, mpl_::arg<2> >, mpl_::na> >’ 
/usr/include/boost/accumulators/framework/depends_on.hpp:330:9: instantiated from ‘boost::accumul 
ators::detail::insert_feature<mpl_::arg<1>, mpl_::arg<2> >’ 
/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:85:5: instantiated from ‘const in 
t boost::mpl::aux::template_arity_impl<boost::accumulators::detail::insert_feature<mpl_::arg<1>, mp 
l_::arg<2> >, 1>::value’ 
/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:93:5: instantiated from ‘const in 
t boost::mpl::aux::template_arity<boost::accumulators::detail::insert_feature<mpl_::arg<1>, mpl_::a 
rg<2> > >::value’ 
/usr/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:98:30: [ skipping 2 instantiation 
contexts ] 
/usr/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp:73:1: instantiated from ‘boost::mpl::apply 
2<boost::mpl::if_<boost::mpl::is_sequence<mpl_::arg<2> >, boost::accumulators::detail::insert_seque 
nce<mpl_::arg<1>, mpl_::arg<2>, void>, boost::accumulators::detail::insert_feature<mpl_::arg<1>, mp 
l_::arg<2> > >, boost::mpl::map0<>, boost::accumulators::tag::mean>’ 
/usr/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp:166:1: instantiated from ‘boost::mpl:: 
aux::fold_impl<-0x00000000000000001, boost::mpl::aux::transform_iter<boost::mpl::v_iter<boost::accu 
mulators::stats<boost::accumulators::tag::mean, boost::accumulators::tag::variance(boost::accumulat 
ors::lazy)>, 0l>, boost::mpl::v_iter<boost::accumulators::stats<boost::accumulators::tag::mean, boo 
st::accumulators::tag::variance(boost::accumulators::lazy)>, 2l>, boost::mpl::protect<boost::mpl::b 
ind1<boost::mpl::quote1<boost::accumulators::as_feature, mpl_::void_>, mpl_::arg<1> >, 0> >, boost: 
:mpl::aux::transform_iter<boost::mpl::v_iter<boost::accumulators::stats<boost::accumulators::tag::m 
ean, boost::accumulators::tag::variance(boost::accumulators::lazy)>, 2l>, boost::mpl::v_iter<boost: 
:accumulators::stats<boost::accumulators::tag::mean, boost::accumulators::tag::variance(boost::accu 
mulators::lazy)>, 2l>, boost::mpl::protect<boost::mpl::bind1<boost::mpl::quote1<boost::accumulators 
::as_feature, mpl_::void_>, mpl_::arg<1> >, 0> >, boost::mpl::map0<>, boost::mpl::if_<boost::mpl::i 
s_sequence<mpl_::arg<2> >, boost::accumulators::detail::insert_sequence<mpl_::arg<1>, mpl_::arg<2>, 
void>, boost::accumulators::detail::insert_feature<mpl_::arg<1>, mpl_::arg<2> > > >’ 
/usr/include/boost/mpl/fold.hpp:39:18: instantiated from ‘boost::mpl::fold<boost::accumulators::d 
etail::as_feature_list<boost::accumulators::stats<boost::accumulators::tag::mean, boost::accumulato 
rs::tag::variance(boost::accumulators::lazy)>, void>, boost::mpl::map0<>, boost::mpl::if_<boost::mp 
l::is_sequence<mpl_::arg<2> >, boost::accumulators::detail::insert_sequence<mpl_::arg<1>, mpl_::arg 
<2>, void>, boost::accumulators::detail::insert_feature<mpl_::arg<1>, mpl_::arg<2> > > >’ 
/usr/include/boost/accumulators/framework/depends_on.hpp:370:13: instantiated from ‘boost::accumu 
lators::detail::make_accumulator_tuple<boost::accumulators::stats<boost::accumulators::tag::mean, b 
oost::accumulators::tag::variance(boost::accumulators::lazy)>, double, void>’ 
/usr/include/boost/accumulators/framework/accumulator_set.hpp:122:5: instantiated from ‘boost::ac 
cumulators::accumulator_set<double, boost::accumulators::stats<boost::accumulators::tag::mean, boos 
t::accumulators::tag::variance(boost::accumulators::lazy)> >’ 
src/SimMany.cpp:70:7: instantiated from here 
/usr/include/boost/mpl/has_key.hpp:33:1: error: no class template named ‘apply’ in ‘struct boost::m 
pl::has_key_impl<boost::mpl::non_sequence_tag>’ 

私はreaaaaaaally迷子:
Deciphering C++ template error messages

毎回私は、テンプレートのエラー・メッセージのこの種を取得します。私は視覚的に1つのエラーメッセージがどこで始まり、どこで終わるかを解析することさえできません。これで私を助けることができる開発ツールはありますか?

これは、私がブーストライブラリを使用しているとき、これは特に怖いです。 :(

+0

私が打ち鳴らすは、より賢明なエラーメッセージを生成するために主張だと思う(私は確かに言うことができないが、私は個人的にそれを使用していなかった)。 –

+2

を、通常、私は最初の行( "instanciatedから...")と最後の(実際のエラー) - そこに何が起こっているかを把握するのに十分な情報があるはずです...中間のすべてがノイズIMHOです... 。 – Nim

答えて

2

STLFiltまたは別のコンパイラを使用しています。クランは、おそらくより良いエラーメッセージを持っている

関連する問題