Предположим, у меня есть
template< unsigned int num >
class SomeFunctionality
{
static unsigned int DoSomething()
{
//...
}
static void DoSomethingElse()
{
}
};
typedef SomeFunctionality<6> SomeFunctionalityFor6;
Семантически «SomeFunctionalityFor6» по сути является пространством имен, специфичным для аргумента шаблона, поэтому в коде используется этот экземпляр шаблона вместо
int main()
{
SomeFunctionalityFor6::DoSomething();
}
Я предпочел бы иметь возможность использовать выражение "использование" в качестве реального пространства имен
int main()
{
using SomeFunctionalityFor6;
DoSomething();
}
Это, как я подозреваю, не работает. Visual studio жалуется, что ей нужно пространство имен, определяемое ключевым словом «namespace» после любого оператора using.
Есть ли способ сделать то, что я пытаюсь сделать? В основном я просто не хочу полностью определять пространство имен каждый раз, когда вызываю статические методы. Я знаю, что это в основном просто синтаксический сахар, но, на мой взгляд, это может сделать код гораздо более читабельным. Мне интересно, есть ли способы непосредственно шаблонизировать пространство имен вместо использования ключевого слова "class".