Почему libstdC++ хранит элементы std::tuple в обратном порядке?

Согласно http://flamingdangerzone.com/cxx11/2012/07/06/optimal-tuple-i.html, что касается std:: tuple...

libstdC++ всегда размещает членов в обратном порядке, а libC++ всегда размещает членов в указанном порядке

Предполагая, что это правда, есть ли причина (историческая или иная), почему libstdC++ использует обратный порядок?

Бонус: изменила ли когда-либо реализация порядок std:: tuple по какой-либо причине?

1 ответ

Решение

Посмотрите этот ответ, чтобы узнать, почему libC++ выбрал прямой порядок. Что касается того, почему libstdC++ выбрал обратный порядок, это, вероятно, потому, что именно так это было продемонстрировано в предложении шаблона variadics, и является более очевидной реализацией.

Бонус: Нет. Эти заказы были стабильными в обеих библиотеках.

Обновить

libC++ выбрал прямой порядок хранения, потому что:

  1. Это осуществимо.
  2. Реализация имеет хорошую производительность во время компиляции.
  3. Это дает клиентам libC++ что-то интуитивно понятное и управляемое, если они заботятся о порядке хранения и хотят зависеть от него при использовании libC++, несмотря на то, что он не указан.

Короче говоря, разработчик libC++ tuple просто чувствовал, что хранение объектов в порядке, указанном клиентом (неявно), было качественным решением.

Другие вопросы по тегам