在一个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
成立,我也不确定// 1
中的静态类型转换是否合法。
编辑:从下面的讨论中,这个问题可以归结为:我如何以符合标准的方式行holds_alternative<T1>(vec[i])
?