Если у нас есть контейнер с не копируемым типом значения, такой контейнерный класс все еще определяет конструктор копирования, просто он может не вызываться.
using T = std::vector<std::unique_ptr<int>>;
std::cout << std::is_copy_constructible_v<T>; // prints out "1" (libstdc++)
Это может вызвать "скрытые" проблемы, такие как обсуждаемая здесь: Нужно ли Visual Studio 2017 явное объявление конструктора перемещения? ,
Мой вопрос заключается в том, могут ли реализации стандартной библиотеки определить конструктор копирования как условно удаленный, а именно удаленный в случае не копируемых типов значений. Это имело бы смысл для меня (по крайней мере, пока не появятся концепции C++). Будет ли такая реализация соответствовать стандарту?