我曾经在《Modern C++ std::variant的实现原理》分析了get<n>(variant)的实现,并由实现推断结论:如果你非常看重效率,那么请把常用的类型安排在前面。
基于的原因也很直接,它有个递归在里面:

过后,我反思了一下,这是debug模式,编译器可能没那么傻!
因为是union,所以上面三个return后面接的变量地址都相同,即
&v1._M_u._M_first == &v1._M_u._M_rest._M_first == &v1._M_u._M_rest._M_rest._M_first
订阅专栏 解锁全文
4178

被折叠的 条评论
为什么被折叠?



