C++11 way to index tuple at runtime without using switch

后端 未结 7 1133
[愿得一人]
[愿得一人] 2020-12-02 10:45

I have a piece of c++11 code similar like below:

switch(var) {
   case 1: dosomething(std::get<1>(tuple));
   case 2: dosomething(std::get<2>(tup         


        
7条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-02 11:11

    For c++11 here is a concise approach that returns a pointer:

    template ::value>
    struct tuple_address {
      static void * of(Tuple & tuple, long function_index) {
        if (template_index - 1 == function_index) {
          return &std::get(tuple);
        } else {
          return tuple_address::of(tuple, function_index);
        }
      }
    };
    template 
    struct tuple_address {
      static void * of(Tuple & tuple, long function_index) {
        return 0;
      }
    };
    template 
    void * tuple_address_of(Tuple & tuple, long index) {
      return tuple_address::of(tuple, index);
    }
    

提交回复
热议问题