Как получить индекс элемента в векторе вариантов? - PullRequest
0 голосов
/ 07 апреля 2020

Из vector<variant<T1,T2>> vec У меня есть T1& elem, который, как известно, находится в vec. Я хочу найти индекс i такой, что get<T1>(vec[i]) равен elem.

Но я не уверен, что это законно:

auto const p = static_cast<std::variant<T1,T2> const*>(&elem); // 1
auto const i = static_cast<std::size_t>(p - vec.data()); // 2

Я не уверен что статус c в // 1 является законным, даже если holds_alternative<T1>(vec[i]) имеет место.


Редактировать: Из приведенного ниже обсуждения этот вопрос сводится к: Как сделать Я делаю линию 1 в соответствии со стандартами?

...