Однако std::pair является уникальным среди всех трех шаблонов и допускает кусочное построение. То есть, если типы T1 и T2 можно сконструировать из набора аргументов a1, a2, ... и b1, b2, ..., то с моральной точки зрения мы можем составить пару
Код: Выделить всё
"pair p(a1, a2, ..., b1, b2, ...)"
Код: Выделить всё
std::pair p(std::piecewise_construct,
std::forward_as_tuple(a1, a2, ...),
std::forward_as_tuple(b1, b2, ...));
Код: Выделить всё
std::tuple t(std::piecewise_construct,
std::forward_as_tuple(a1, a2, ...),
std::forward_as_tuple(b1, b2, ...),
std::forward_as_tuple(c1, c2, ...));
(У меня действительно есть ситуация, в которой я хотел бы инициализировать вектор кортежей со значением элемента по умолчанию, который я бы предпочел построить непосредственно из аргументов, без повторного описания каждого типа элемента кортежа.)
Подробнее здесь: https://stackoverflow.com/questions/118 ... nstruction
Мобильная версия