Ich habe eine Klasse unit
, die die Eigenschaften hatFehler: kann nicht passieren Objekte von nicht-trivialer kopierbar Typ durch `...`
std::is_trivial<unit>::value; // true
std::is_trivially_copyable<unit>::value; // true (on compilers which have this trait)
Ich möchte sind Vektoren von unit
als passieren Tupel, z
Ich brauche diese Vektoren in Konvertierungsfunktionen passierbar, die verschiedene Arten von Argumenten verwenden, z.
someOtherType convert(const geodeticTuple& point, const geodeticTuple& origin)
oder
someOtherType convert(const geodeticTuple& point, ...)
mit MSVC2015 funktioniert dies völlig in Ordnung, aber mit gcc-4.9.3, erhalte ich die Fehlermeldung:
error: cannot pass objects of non-trivially-copyable type
const geodeticTuple {aka const struct std::tuple<unit, unit, unit>}
through...
und da gcc-4.9 .3 unterstützt nicht die is_trivially_xxx
Style-Type-Eigenschaften, ich habe Probleme zu verstehen, warum dies fehlschlägt.
Ist ein Tupel von trivialen Typen nicht trivial kopierbar?
Warum verwenden Sie eine alte c Vararg-Funktion anstelle einer variadischen Funktionsvorlage? –
Ich hatte Probleme, weil es nicht zu mögen schien, wenn keine Argumente vorlagen. –