libcopp  1.2.0
cmd_option_bindt_cc.h
Go to the documentation of this file.
1 #ifndef UTIL_CLI_CMDOPTIONBINDT_CC_H
2 #define UTIL_CLI_CMDOPTIONBINDT_CC_H
3 
4 #pragma once
5 
7 
8 /*
9  * cmd_option_bindt_cc.h
10  *
11  * Created on: 2012-01-18
12  * Author: OWenT
13  *
14  * 自由函数绑定器
15  */
16 
17 namespace util {
18  namespace cli {
19  // 绑定器集合
20  namespace binder {
21  // ============================
22  // === 函数绑定 ===
23  // ============================
24  template <typename _TF>
26  private:
27  _TF func_;
28 
29  public:
30  cmd_option_bindt_cc_caller(_TF f) : func_(f) {}
31 
32 #if defined(UTIL_CONFIG_COMPILER_CXX_VARIADIC_TEMPLATES) && UTIL_CONFIG_COMPILER_CXX_VARIADIC_TEMPLATES
33  template <typename _TCBP, typename... _Args>
34  void operator()(_TCBP &param, _Args &... args) {
35  func_(param, args...);
36  }
37 
38 #else
39  template <typename _TCBP>
40  void operator()(_TCBP &args) {
41  func_(args);
42  }
43 
44  template <typename _TCBP, typename _Arg0>
45  void operator()(_TCBP &args, _Arg0 &arg0) {
46  func_(args, arg0);
47  }
48 
49  template <typename _TCBP, typename _Arg0, typename _Arg1>
50  void operator()(_TCBP &args, _Arg0 &arg0, _Arg1 &arg1) {
51  func_(args, arg0, arg1);
52  }
53 
54  template <typename _TCBP, typename _Arg0, typename _Arg1, typename _Arg2>
55  void operator()(_TCBP &args, _Arg0 &arg0, _Arg1 &arg1, _Arg2 &arg2) {
56  func_(args, arg0, arg1, arg2);
57  }
58 #endif
59  };
60  } // namespace binder
61  } // namespace cli
62 } // namespace util
63 #endif /* cmd_option_bindt_cc_caller */
void operator()(_TCBP &args, _Arg0 &arg0, _Arg1 &arg1, _Arg2 &arg2)
void operator()(_TCBP &args, _Arg0 &arg0, _Arg1 &arg1)