Как я могу изменить значения объектов в кортеже? - PullRequest
0 голосов
/ 18 октября 2019

В моем классе у меня есть объект кортежа, к которому я хочу обратиться к объектам в этом качестве ссылки.

На самом деле, я хочу знать, как я могу написать функцию get для доступа к объектам в моемtuple?

Я написал функцию, которая возвращает lvalue моего объекта в кортеже. Я хочу знать, как я могу изменить его, чтобы он возвращал rvalue?

У меня есть шаблон с именем GetIndex, который возвращает индекс объекта типа в моем кортеже. В моем кортеже я определенно уверен, что существуют уникальные типы объектов.

//return just lvalue
template <typename T>
T get_module()
{
  return std::get<Private::GetIndex<T, Args...>::value>(types);
}

//compilation error
template <typename T>
T& get_module()
{
  return &std::get<Private::GetIndex<T, Args...>::value>(types);
}
'''


1 Ответ

0 голосов
/ 18 октября 2019

Вы можете просто поставить и после T. Этого будет достаточно.

  template <typename T>
  T &get_module()
  {
    return std::get<Private::GetIndex<T, Args...>::value>(types);
  }
...