Есть ли разница между переносом содержимого файла заголовка и cpp в пространство имен или обертыванием только содержимого заголовка и последующим использованием пространства имен в файле cpp?
Под разницей я подразумеваю любое снижение производительности сортировки или немного другую семантику, которая может вызвать проблемы, или все, о чем мне нужно знать.
Пример:
// 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;
}
}
Если нет разницы, какая форма предпочтительнее и почему?