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