Estoy usando la declaración 'using' en C++ para agregar std :: string y std :: vector al espacio de nombres local (para guardar tipeo innecesario 'std ::' s).¿Cuál es el alcance de la declaración de "uso" en C++?
using std::string;
using std::vector;
class Foo { /*...*/ };
¿Cuál es el alcance de esta declaración? Si hago esto en un encabezado, ¿inyectará estas declaraciones 'using' en cada archivo cpp que incluya el encabezado?
Por si acaso no está claro en las otras respuestas aquí: - ** ¡No coloque una declaración 'using' (o' using' directive) en el alcance del archivo en un include file/header! ** Eso lo hará causar dolores de cabeza a los usuarios del encabezado. –
De hecho, no coloque una declaración 'using' (a fortiori * directive *) en un encabezado ** en absoluto **, * ¡incluso dentro de un espacio de nombres! * Consulte [alcance de uso de declaración dentro de un espacio de nombres] (http://stackoverflow.com/q/6175705/2025416) para los problemas que esto ocasiona. –