C'è qualche differenza tra il wrapping sia dell'intestazione che del contenuto del file cpp in uno spazio dei nomi o il wrapping solo del contenuto dell'intestazione e quindi utilizzare lo spazio dei nomi nel file cpp?
Per differenza intendo qualsiasi tipo di penalizzazione delle prestazioni o semantica leggermente diversa che può causare problemi o qualsiasi cosa di cui devo essere a conoscenza.
Esempio:
// 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 non c'è differenza qual è la forma preferita e perché?