¿Hay alguna diferencia entre envolver el contenido del encabezado y el archivo cpp en un espacio de nombres o envolver solo el contenido del encabezado y luego usar el espacio de nombres en el archivo cpp?
Por diferencia me refiero a cualquier tipo de penalización de rendimiento o semántica ligeramente diferente que pueda causar problemas o cualquier cosa que deba tener en cuenta.
Ejemplo:
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
namespace X
{
void Foo::TheFunc()
{
return;
}
}
VS
// header
namespace X
{
class Foo
{
public:
void TheFunc();
};
}
// cpp
using namespace X;
{
void Foo::TheFunc()
{
return;
}
}
Si no hay diferencia, ¿cuál es la forma preferida y por qué?