У меня есть класс unit
, который имеет свойствоошибка: не может передать объекты нетривиально-Copyable типа через `` ...
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)
или
someOtherType convert(const geodeticTuple& point, ...)
с помощью MSVC2015, это работает совершенно нормально, но с GCC-4.9.3, я получаю ошибку:
error: cannot pass objects of non-trivially-copyable type
const geodeticTuple {aka const struct std::tuple<unit, unit, unit>}
through...
и так НКУ-4,9 .3 не поддерживает стили типа стиля is_trivially_xxx
, у меня возникают проблемы с пониманием того, почему это происходит.
Является ли кортеж тривиальными типами не тривиально с возможностью копирования?
Почему вы используете старую функцию типа var var вместо шаблона вариационной функции? –
У меня были проблемы, потому что это не похоже на отсутствие аргументов. –