Как избежать неопределенного порядка выполнения конструкторов при использовании std::make_tuple [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Как избежать неопределенного порядка выполнения конструкторов при использовании std::make_tuple [дубликат]

Сообщение Гость »


Как я могу использовать std::make_tuple, если важен порядок выполнения конструкторов?

Например, я предполагаю, что порядок выполнения конструктора класса A и конструктора класса B не определен для:

std::tuple t(std::make_tuple(A(std::cin), B(std::cin))); Я пришел к такому выводу после прочтения комментария к вопросу

Перевод std::tuple в пакет параметров шаблона

это говорит об этом

шаблон std::tuple parse(std::istream &stream) { return std::make_tuple(args(stream)...); } реализация имеет неопределенный порядок выполнения конструкторов.

Обновление, предоставляющее некоторый контекст:

Чтобы подробнее рассказать о том, что я пытаюсь сделать, вот набросок:

Я хочу прочитать некоторые сериализованные объекты из stdin с помощью двоичного анализа/сериализации CodeSynthesis XSD. Вот пример того, как выполняется такой анализ и сериализация: example/cxx/tree/binary/xdr/driver.cxx

xml_schema::istream ixdr (xdr); std::auto_ptr копия (новый каталог (ixdr)); Я хочу иметь возможность указать список классов, которые имеют сериализованные объекты (например, каталог, каталог, someOtherSerializableClass для 3 сериализованных объектов) и сохранить эту информацию как определение типа

шаблон структура variadic_typedef {}; typedef variadic_typedef myTypes; как предложено в разделе «Можно ли «сохранить» пакет параметров шаблона, не расширяя его?»

и найдите способ получить std::tuple для работы после завершения синтаксического анализа. Эскиз:

auto SerializedObjects(binaryParse(std::cin)); где сериализованные объекты будут иметь тип
std::tuple
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»