Нет, вам не разрешено это делать. Помещение вещи в пространство имен std
разрешено только в очень редких случаях, например шаблонные специализации std::hash
например. В вашем случае вы можете использовать вывод аргумента шаблона класса с немного большим набором текста, чем нужно:
std::array a = {2,3,5,7};
std::vector w(a.cbegin(), a.cend());
Обратите внимание, что скобки имеют решающее значение для инициализации w
, замена их фигурными скобками выводит что-то совсем другое.
Вы также можете выделить вышеприведенный вызов конструктора в отдельный вспомогательный шаблон:
template <class T, std::size_t N>
auto toVec(const std::array<T, N> a)
{
return std::vector(a.cbegin(), a.cend());
}
, который допускает инициализацию как
std::vector w = toVec(a);