//---------------------------1-------------------
template<int _Nx>
struct _Ph
{ // placeholder
};
//-----------------2-------------------------------
// TEMPLATE FUNCTION bind (explicit return type)
template<class _Ret,
class _Fx,
class... _Types> inline
_Binder<_Ret, _Fx, _Types...> bind(_Fx&& _Func, _Types&&... _Args)
{ // bind a callable object with an explicit return type
return (_Binder<_Ret, _Fx, _Types...>(
_STD forward<_Fx>(_Func), _STD forward<_Types>(_Args)...));
}
///--------------------------3------------------------
// PLACEHOLDER ARGUMENTS
namespace placeholders { // placeholders
constexpr _Ph<1> _1{};
constexpr _Ph<2> _2{};
constexpr _Ph<3> _3{};
constexpr _Ph<4> _4{};
constexpr _Ph<5> _5{};
constexpr _Ph<6> _6{};
constexpr _Ph<7> _7{};
constexpr _Ph<8> _8{};
constexpr _Ph<9> _9{};
constexpr _Ph<10> _10{};
constexpr _Ph<11> _11{};
constexpr _Ph<12> _12{};
constexpr _Ph<13> _13{};
constexpr _Ph<14> _14{};
constexpr _Ph<15> _15{};
constexpr _Ph<16> _16{};
constexpr _Ph<17> _17{};
constexpr _Ph<18> _18{};
constexpr _Ph<19> _19{};
constexpr _Ph<20> _20{};
} // namespace placeholders
中間那段程式碼不懂,它是怎麼搭配第3部分實現的?誰可以寫的簡單點的bind,謝謝了。
用偽代碼寫看起來可以是這樣(省略轉發和元編程細節):