C++ What does this line of code mean?
c++, c++11, member, using
Solution
It is a C++11 syntax which covers `typedef` functionality (and more). In this case, it makes an alias called `Fun`, which is the same type as an `std::function<void()>`:
using Fun = std::function<void()>; // same as typedef std::function<void()> Fun
This means you can do this:
void foo()
{
std::cout << "foo\n";
}
Fun f = foo; // instead of std::function<void()> f = foo;
f();
Similarly for `PFun`.
Problem
I've seen this in a project called Selene (a C++11 Lua wrapper) and I was wandering what it does? ``` using Fun = std::function<void()>; using PFun = std::function<void(Fun)>; ``` It is a private member of a class (Selector). Surrounding code: ``` namespace sel { class State; class Selector { private: friend class State; State &_state; using Fun = std::function<void()>; using PFun = std::function<void(Fun)>; // Traverses the structure up to this element Fun _traverse; // Pushes this element to the stack Fun _get; // Sets this element from a function that pushes a value to the // stack. PFun _put; // Functor is stored when the () operator is invoked. The argument // is used to indicate how many return values are expected using Functor = std::function<void(int)>; mutable std::unique_ptr<Functor> _functor; Selector(State &s, Fun traverse, Fun get, PFun put) : _state(s), _traverse(traverse), _get(get), _put(put), _functor{nullptr} {} Selector(State &s, const char *name); ```