folgenden Code nicht auf gcc 4.9.2 mit Boost 1.64 kompilieren:Kompilierung nicht für verschachtelten boost :: Variante der Fusionspaar
#include <boost/fusion/support/pair.hpp>
#include <boost/mpl/int.hpp>
#include <boost/variant.hpp>
#include <string>
namespace bf = boost::fusion;
namespace bm = boost::mpl;
int
main(int argc, char** argv)
{
using L2_t = boost::variant<bf::pair<bm::int_<1>,char>>;
using L1_t = boost::variant<bf::pair<bm::int_<1>,L2_t>>;
L1_t result;
}
während ich denke, es legal ist.
Fehlermeldung beginnt mit:
/home/vagrant/.conan/data/boost/1.64.0/conaned/master/package/b06f2a498643ee1d889c6aea8e0e21d3cac9f57c/include/boost/fusion/support/pair.hpp: In instantiation of ‘constexpr boost::fusion::pai
r<First, Second>::pair(const boost::fusion::pair<First, Second2>&) [with Second2 = boost::variant<boost::fusion::pair<mpl_::int_<1>, char> >; First = mpl_::int_<1>; Second = char]’: /home/vagrant/.conan/data/boost/1.64.0/conaned/master/package/b06f2a498643ee1d889c6aea8e0e21d3cac9f57c/include/boost/type_traits/is_constructible.hpp:33:45: required by substitution of ‘tem
plate<class T, class Arg, class> static boost::type_traits::yes_type boost::detail::is_constructible_imp::test1(int) [with T = boost::fusion::pair<mpl_::int_<1>, char>; Arg = const boost::fus
ion::pair<mpl_::int_<1>, boost::variant<boost::fusion::pair<mpl_::int_<1>, char> > >&; <template-parameter-1-3> = <missing>]’
Compilation gelingt, wenn ich ein Paar Schlüsselwert ändern, um sie anders zu machen.
Wie löst man dieses Problem? Ich verwende diese Paarschlüsselwerte zum Serialisieren/Deserialisieren, daher ist es wichtig für mich, dieselben Werte auf verschiedenen Ebenen zu haben.
Sieht aus wie es in gcc 5.2 funktioniert: https://wandbox.org/permlink/o4IpZbyohgECH7kO – xaxxon
Richtig! Danke für die Erinnerung an Online-Compilation, ich habe es vergessen. Das war dumm, nicht nachzusehen. –
Wenn Sie sich die Änderungsprotokolle ansehen (insbesondere welche Fehler behoben wurden), gibt es in den späten 4.9 und frühen 5.x Versionen viele C++ 11 Fehler. Auch einige fehlende Features werden noch implementiert. Danke, dass Sie ein vollständiges Beispiel gepostet haben, das das Kopieren/Einfügen in einen Online-Compiler trivial gemacht hat. – xaxxon