Existe alguma diferença entre envolver os conteúdos do arquivo de cabeçalho e cpp em um namespace ou envolver apenas o conteúdo do cabeçalho e, em seguida, usar o namespace no arquivo cpp?
Por diferença, quero dizer qualquer penalidade de desempenho de classificação ou semântica ligeiramente diferente que pode causar problemas ou qualquer coisa que eu preciso estar ciente.
Exemplo:
// 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;
}
}
Se não houver diferença, qual é a forma preferida e por quê?