C++11: Как создать псевдоним для функции?

Если у меня есть класс 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 может эффективно реализовываться как косвенный указатель, где «без псевдонима» A может использовать «непосредственную семантику».

61
задан Andrew Tomazos 26 March 2012 в 18:36
поделиться