http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46507
--- Comment #2 from miles at gnu dot org 2010-11-16 19:06:02 UTC --- > Note that when I tried this same test yesterday, on a different machine (but > the same compiler version), "extern_tuple_test" (but not "arg_tuple_test") > _did_ result in a direct jump to A::f! So maybe something funny is going > on... Actually this is wrong: the version of "extern_tuple_test" which worked yesterday was really this: void extern_tuple_test () { extern const std::tuple<A> t; std::get<0>(t).f (); } resulting in: extern_tuple_test(): movl $t, %edi jmp A::f() const Still, it seems like "arg_tuple_test" (and the previous version of "extern_tuple_tst") should also received the same optimization.