Если у меня есть класс Foo в строке пространства имен:
namespace bar
{
class Foo { ... }
};
Тогда я могу:
using Baz = bar::Foo;
и теперь это точно так же, как я определил класс в моем пространстве имен с именем Baz.
Можно ли сделать то же самое для функций?
namespace bar
{
void f();
}
И затем:
using g = bar::f; // error: ‘f’ in namespace ‘bar’ does not name a type
Каков самый чистый способ сделать это?
Решение также должно выполняться для функций шаблона.
Определение: Если какой-либо объект B является псевдоним для A, то, если любое или все обычаи (не декларации или определения курса) A заменяются на B в исходный код, отличный от кода с разделителем, остается неизменным. Например, typedef A B
является псевдонимом. #define B A
является псевдонимом (по крайней мере). T& B = A
не является псевдонимом, B может эффективно реализоваться как косвенный указатель, если "unaliased" A может использовать "непосредственную семантику".