Разрешает ли C ++ 11 vector ?

Требования к контейнерам изменились с C ++ 03 на C ++ 11. В то время как C ++ 03 имел общие требования (например, возможность создания копий и возможность назначения для вектора), C ​​++ 11 определяет подробные требования для каждой операции контейнера (раздел 23.2).

В результате вы можете, например, хранить в векторе тип, который можно копировать, но не присваивать, например структуру с константным членом, при условии, что вы выполняете только определенные операции, которые не требуют присваивания (конструкция и push_back являются такими операциями ; insert не является).

Что мне интересно: означает ли это, что стандарт теперь позволяет vector ? Я не вижу причин, по которым это не должно быть - const T , как и структура с членом const, является типом, который можно копировать, но не присваивать - но я, возможно, что-то пропустил.

(Отчасти я думаю, что я что-то упустил, так это то, что ствол gcc вылетает и сгорает, если вы пытаетесь создать экземпляр vector , но с vector , где T имеет постоянный член).

65
задан HC4 - reinstate Monica 2 March 2015 в 03:59
поделиться