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つのエラーメッセージがどこで始まり、どこで終わるかを解析することさえできません。これで私を助けることができる開発ツールはありますか?
これは、私がブーストライブラリを使用しているとき、これは特に怖いです。 :(
私が打ち鳴らすは、より賢明なエラーメッセージを生成するために主張だと思う(私は確かに言うことができないが、私は個人的にそれを使用していなかった)。 –
を、通常、私は最初の行( "instanciatedから...")と最後の(実際のエラー) - そこに何が起こっているかを把握するのに十分な情報があるはずです...中間のすべてがノイズIMHOです... 。 – Nim