Чи існує якась різниця між загортанням вмісту файлу заголовка та файлу 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;
}
}
Якщо немає різниці, яка форма є кращою і чому?