Реализация моего собственного класса кортежей - что я должен рассмотреть? - PullRequest
0 голосов
/ 03 марта 2020

Я планирую написать реализацию std::tuple. Или, если быть более точным, мне нужно написать класс, который:

  • реализует кортеж.
  • имеет собственный эквивалент std::get() (также как автономная функция).
  • ведет себя очень похоже на std::tuple при обычном использовании, но
  • не обязательно является идеальной заменой std::tuple, т. Е. Может иметь различия в поведении в угловых случаях. В частности, если там у комитета по стандартизации были какие-либо прискорбные выборы с std::tuple, я не хочу повторять их.
  • Может зависеть от части стандартной библиотеки, но предпочтительно не от какой-либо работы функции времени Итак, зависимости <type_traits> или <cstdint> в порядке, некоторые из <utility> похожи на std::forward(), но давайте не будем go сумасшедшими.
  • Должны быть написаны на C ++ 11, хотя C ++ 14 может быть уместным, если это делает его намного легче / лучше каким-то образом.

Мой вопрос состоит из нескольких частей:

  • Разумно ли, учитывая мои ограничения, адаптироваться реализация libstdc ++ или libc ++? Возможно, вырезать или заменить некоторые ненужные / неудачные детали?
  • Какие важные конструктивные решения мне нужно будет принять при адаптации или написании этого заново?

Примечание: Очевидно, это для среды, где сама стандартная библиотека недоступна.

...