У меня есть класс unit
, который имеет свойства
std::is_trivial<unit>::value; // true
std::is_trivially_copyable<unit>::value; // true (on compilers which have this trait)
Я хотел бы передать векторы unit
в виде кортежа, например.
using geodeticTuple = std::tuple<unit, unit, unit>;
Мне нужно, чтобы эти векторы можно было передавать в функции преобразования, которые используют разные типы аргументов, например.
someOtherType convert(const geodeticTuple& point, const geodeticTuple& origin)
or
someOtherType convert(const geodeticTuple& point, ...)
используя MSVC2015, это работает отлично, но с gcc-4.9.3 я получаю сообщение об ошибке:
ошибка: невозможно передать объекты нетривиально копируемого типа
const geodeticTuple {aka const struct std::tuple<unit, unit, unit>}
через...
и поскольку gcc-4.9.3 не поддерживает признаки типа is_trivially_xxx
, мне трудно понять, почему это не работает.
Является ли кортеж тривиальных типов не копируемым тривиально?