次のスニペットを検討してください。
#include <vector>
struct A
{
A(int b): m_b(b) { }
private:
int m_b;
};
int main()
{
std::vector<A> vec;
vec.push_back( A(3) );
vec.emplace_back( 3 );
}
一時的な値が渡される特定のケースでは、コンパイラが最適化しない 2 つの呼び出しに違いはありますか? どちらかを優先する必要がありますか?