Должна ли черта типа обрабатывать такие случаи, как std::vector < std::unique_ptr <int> >
, и обнаруживать, что она не копируется конструктивно?
Вот пример в https://ideone.com/gbcRUa (запуск g++ 4.8.1)
#include <type_traits>
#include <vector>
#include <iostream>
#include <memory>
int main()
{
// This prints 1, implying that it copy constructible, when it clearly not
std::cout << std::is_copy_constructible< std::vector<std::unique_ptr<int> > >::value << std::endl;
return 0;
}
Если это правильное поведение для is_copy_constructible
, есть ли способ обнаружить, что конструкция копирования плохо сформирована? Ну, кроме того, что он не скомпилируется.