我很好奇调用
我的初步直觉(和担忧)是,如果元组被实现为可变参数模板,则元组的递归结构将导致 get 需要 N 次查找(调用
另一方面,我希望编译器能够优化此过程,直接返回正确的偏移量,而不需要 N 次调用的开销。
基本上我想知道:是否有规定的运行时保证?这会限制如何实现
std::tuple<>
上的 std::get<>
方法所需的查找时间。简短的谷歌搜索(包括通常有此信息的参考页面)没有得到结果。我的初步直觉(和担忧)是,如果元组被实现为可变参数模板,则元组的递归结构将导致 get 需要 N 次查找(调用
get<3>(t)
看起来像 t.rest().rest().first()
)。但愿我这里完全错了...另一方面,我希望编译器能够优化此过程,直接返回正确的偏移量,而不需要 N 次调用的开销。
基本上我想知道:是否有规定的运行时保证?这会限制如何实现
std::tuple
吗?
std::get<>
的内容,我可以想象出合理的原因来解释为什么它可能不是高效的(例如调试)。 - user743382