Yo diría que simplemente mantenga el alcance al mínimo; con eso, haz lo que sea más limpio.
Si lo usa para una función, guárdelo en el alcance de esa función. Si lo usa para varias funciones, conviértalo en un typedef privado. Y si espera que otros lo usen (quizás fuera de utilidad), hágalo público.
En código:
namespace detail
{
// By convention, you aren't suppose to use things from
// this namespace, so this is effectively private to me.
typedef int* my_private_type;
}
void some_func()
{
// I am allowed to go inside detail:
detail::my_private_type x = 0;
/* ... */
}
void some_other_func()
{
// I only need the typedef for this function,
// so I put it at this scope:
typedef really::long::type<int>::why_so_long short_type;
short_type x;
/* ... */
}
typedef int integer_type; // intended for public use, not hidden
integer_type more_func()
{
return 5;
}
class some_class
{
public:
// public, intended for client use
typedef std::vector<int> int_vector;
int_vector get_vec() const;
private:
// private, only for use in this class
typedef int* int_ptr;
};
Esperemos que da una idea de lo que quiero decir.
Supongo que no entiendo por qué estás preguntando. ¿Has oído algo? –
jaja, eh, ¿qué? ¿Es eso de una canción? – SirYakalot
No hay typedef en su ejemplo ... – interjay