полностью разрешено оставлять t1 в частично назначенном состоянии?
Да. Копирование-назначение указывается как:
Эффекты: Назначает каждый элемент u
соответствующему элементу *this
.
В стандартной библиотеке есть другие типы, в которых do указывает гарантию исключения (например, optional
), но tuple
не предоставляет ее.
Обратите внимание, что в нем не указан порядок назначения.Реализация может назначить Omg
первым (то есть без изменений на t1
) или int
первым (так что в итоге вы получите полуприспределенное состояние).
Я думаю, что реализация может также выбрать копирование и обмен и, таким образом, предоставить надежную гарантию исключения.Это будет соответствовать указанным эффектам.Но это не гарантируется стандартом.