Почему нет пары & lt; int, int & gt; POD (Обычные старые данные) [дубликат]

14
задан Walter 27 October 2014 в 17:14
поделиться

2 ответа

Простая причина: история! У оригинала std::pair<T0, T1> не могло быть тривиального конструктора по умолчанию, так как у него был другой конструктор. Он был определен для инициализации своих членов. Изменение этого поведения в std::pair<T0, T1> для тривиально конструктивных типов, где люди полагаются на инициализацию значения, будет изменением разбиения.

В дополнение к причине истории конструктор по умолчанию std::pair<...> определяется как конструктор constexpr. Конструктор по умолчанию constexpr по умолчанию не может быть установлен по умолчанию.

Я не знаю об этом, кроме создания пользовательского класса.

7
ответ дан Dietmar Kühl 5 September 2018 в 11:07
поделиться

Конструктор по умолчанию для значения std :: pair инициализирует оба элемента пары, первый и второй, поэтому он не может быть тривиальным.

1
ответ дан user396672 5 September 2018 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: