繁体   English   中英

C ++这行代码是什么意思?

[英]C++ What does this line of code mean?

我在一个名为Selene (一个C ++ 11 Lua包装器)的项目中看到了这个,我在徘徊它的作用?

using Fun = std::function<void()>;
using PFun = std::function<void(Fun)>;

它是类(Selector)的私有成员。

周边代码:

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);

它是一种C ++ 11语法,涵盖了typedef功能( 以及更多 )。 在这种情况下,它创建一个名为Fun的别名,它与std::function<void()>类型相同:

using Fun = std::function<void()>; // same as typedef std::function<void()> Fun

这意味着你可以这样做:

void foo() 
{
  std::cout << "foo\n";
}

Fun f = foo; // instead of std::function<void()> f = foo;
f();

同样对于PFun

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM