⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 delegate_mfn_cc.hpp

📁 An article on the implementation of a fast C++ delegate with many advanced features.
💻 HPP
字号:
// FD.Delegate
// Do not include this header directly.

public:
  /**
   * Copy constructor for member function bind with calling convention.
   */
  template<typename UR FD_DELEGATE_COMMA FD_DELEGATE_TEMPLATE_PARMS2, typename U, typename T>
  FD_DELEGATE_DELEGATE(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2), T t)
  {
    this->FD_DELEGATE_CC_NAME(mfn_bind)( fxn, t );
  }

  template<typename UR FD_DELEGATE_COMMA FD_DELEGATE_TEMPLATE_PARMS2, typename U, typename T>
  FD_DELEGATE_DELEGATE(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2) const, T t)
  {
    this->FD_DELEGATE_CC_NAME(mfn_bind_const)( fxn, t );
  }

  /**
   * bind() for member function bind with calling convention.
   */
  template<typename UR FD_DELEGATE_COMMA FD_DELEGATE_TEMPLATE_PARMS2, typename U, typename T>
  FD_DELEGATE_DELEGATE & bind(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2), T t)
  {
    this->FD_DELEGATE_CC_NAME(mfn_bind)( fxn, t, true );
    return *this;
  }

  template<typename UR FD_DELEGATE_COMMA FD_DELEGATE_TEMPLATE_PARMS2, typename U, typename T>
  FD_DELEGATE_DELEGATE & bind(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2) const, T t)
  {
    this->FD_DELEGATE_CC_NAME(mfn_bind_const)( fxn, t, true );
    return *this;
  }

private:

#if FD_DELEGATE_NUM_ARGS > 0

  /**
   * assgin_to() for member function with calling convention.
   */
  template<typename UR FD_DELEGATE_COMMA_SP FD_DELEGATE_TEMPLATE_PARMS2_SP, typename U>
  FD_DELEGATE_DELEGATE & assign_to(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2_SP), bool reset = false)
  {
    this->FD_DELEGATE_CC_NAME(mfn)( fxn, reset );
    return *this;
  }

  template<typename UR FD_DELEGATE_COMMA_SP FD_DELEGATE_TEMPLATE_PARMS2_SP, typename U>
  FD_DELEGATE_DELEGATE & assign_to(UR (FD_DELEGATE_MF_CC U::*fxn)(FD_DELEGATE_TEMPLATE_ARGS2_SP) const, bool reset = false)
  {
    this->FD_DELEGATE_CC_NAME(mfn_const)( fxn, reset );
    return *this;
  }

#endif // #if FD_DELEGATE_NUM_ARGS > 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -