Из 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
в соответствии со стандартами?