Анонимное пространство имен в файле реализации шаблона

В файле .cpp анонимное пространство имен в основном имеет связь со всем файлом (после #include), поскольку файл .cpp никогда не будет включен другим файлом. Но тот же шаблон в заголовочном файле распространяет это анонимное пространство имен туда, куда он включен. Есть ли способ создать аналогичный эффект в заголовочном файле? Я спрашиваю, потому что реализации шаблона должны быть в заголовках.

Простой пример в обычном .h файле:

// object.h

namespace {
using verbose::namespace::type;
}

...

struct object {
type value;
}

или аналогично в некотором файле реализации шаблона. Тип type будет в объеме, где этот файл включен.

Это можно обойти?

РЕДАКТИРОВАТЬ: я думаю, что нашел подробный, но выполнимый ответ.

// object.h

struct Namespace {
using verbose::namespace::type;

Namespace() = delete;

struct object {
type value;
};
};

using Namespace::object;

0

Решение

Это должно сделать трюк:

// object.h
{
namespace {
using verbose::namespace::type;
}

...

struct object {
type value;
}
}

Пространства имен должны быть действительными только в пределах блока кода, в котором они определены.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]