Conversión entre vectores con diferentes asignadores

He escrito un tipo de asignador con estado de estilo C ++ 11 simple. Dad

template<typename T> class my_allocator {
   // the usual stuff
};

template<typename T> using my_vector = std::vector<T, my_allocator<T>>;

my_vector<int> x;

std::vector<int> y = x; // error

Cuál es la mejor manera de permitir conversiones de unamy_vector a unstd::vector utilizando el asignador predeterminado? GCC 4.7 (reciente svn) dice

error: conversion from 'my_vector<int> {aka std::vector<int, my_allocator<int>>}' to non-scalar type 'std::vector<int>' requested

bviamente, esto podría hacerse con, por ejemplo, una función de conversión simple como

template<typename T> std::vector<T> to_std_vec(const my_vector<T>& v)  {
   return std::vector<T>(&v[0], &v[v.size()]);
   }

pero esto parece bastante poco elegante. ¿Existe una mejor solución en C ++ 11?

a semántica de @Move está justo en esta situación, por supuesto, pero me gustaría copiar la construcción y la asignación para trabajar sin ruido / tipeo adicional.

Respuestas a la pregunta(3)

Su respuesta a la pregunta