Есть ли способ псевдонима статической функции-члена в C++? Я хотел бы иметь возможность вывести его в рамки, чтобы мне не нужно было полностью квалифицировать имя.с использованием псевдонима для статических функций-членов?
существу что-то вроде:
struct Foo {
static void bar() {}
};
using baz = Foo::bar; //Does not compile
void test() { baz(); } //Goal is that this should compile
Моей первой мысли было использовать std::bind
(как в auto baz = std::bind(Foo::bar);
) или указатели на функции (как в auto baz = Foo::bar;
), но это является неудовлетворительным, потому что для каждой функции я хочу, чтобы иметь возможность используйте псевдоним в, мне нужно сделать отдельную переменную только для этой функции или вместо этого сделать переменную псевдонима доступной в глобальной/статической области.
Вы можете сделать 'Foo' пространство имен? –
Что не так с переменной псевдонима в глобальной области? Однако вы должны использовать 'constexpr':' constexpr auto baz = & Foo: bar; 'Ваша цель - ввести имя в этой области, и' constexpr' делает именно это. –
+1 для предложения использовать constexpr. В основном я не хотел беспокоиться об инициализации глобальных переменных. Глобальная инициализация - сложный бизнес. Был надеется, что на языке, который просто занимается обзором, будет механик. – Mark