Ich versuche, eine Liste mit den Permutationen einer bestimmten Typenliste zu erstellen.Permutationen einer Liste von Typen mit boost :: mpl
Der folgende Code scheint zu funktionieren, wenn auch ohne das beabsichtigte Ergebnis, wenn ich eine angegebene Liste verwende, anstatt eine neue Liste durch Entfernen von der tatsächlichen Eingabe zu erstellen. Dies wird durch den Unterschied zwischen permutation_helper und broken_helper unten gezeigt.
Weiß jemand, warum mpl::remove
in diesem Fall nicht wie erwartet funktioniert?
Ich habe die Assert verwendet, um zu bestimmen, was von der Funktion zurückgegeben wird, Typeliste ist nicht das erwartete Ergebnis. Dies ist die Botschaft, die die Assertion kehrt für broken_helper:
testcase.cpp: In function ‘int main()’:
testcase.cpp:45: error: no matching function for call to ‘assertion_failed(mpl_::failed************ boost::mpl::equal<boost::mpl::joint_view<boost::mpl::joint_view<boost::mpl::list0<mpl_::na>, boost::mpl::l_end>, boost::mpl::l_end>, boost::mpl::list2<test_type1, test_type2>, boost::is_same<mpl_::arg<-0x00000000000000001>, mpl_::arg<-0x00000000000000001> > >::************)’
Der Ausgang permutation_helper verwendet, ist eine aktuelle Liste:
testcase.cpp: In function ‘int main()’:
testcase.cpp:45: error: no matching function for call to ‘assertion_failed(mpl_::failed************ boost::mpl::equal<boost::mpl::list2<test_type1, test_type2>, boost::mpl::joint_view<boost::mpl::joint_view<boost::mpl::list0<mpl_::na>, boost::mpl::l_item<mpl_::long_<1l>, boost::mpl::l_item<mpl_::long_<2l>, test_type1, boost::mpl::list1<test_type3> >, boost::mpl::l_end> >, boost::mpl::l_item<mpl_::long_<1l>, boost::mpl::l_item<mpl_::long_<2l>, test_type2, boost::mpl::list1<test_type3> >, boost::mpl::l_end> >, boost::is_same<mpl_::arg<-0x00000000000000001>, mpl_::arg<-0x00000000000000001> > >::************)’