Czy kompilator C ++ zoptymalizuje kod powrotu po wartości?

Załóżmy, że używam Visual Studio lub nowoczesnego GCC z -O2. Czy kompilator utworzyS wewnątrzfunc() a następnie skopiuj go domy_resultlub czy stworzymy_result z konstruktorem(5, 6, 5 + 6) bez tworzenia tymczasowegoS?

UWAGA: Funkcjonowaćfunc() definicja i jej użycie są w oddzielnych plikach .obj!

struct S
{
    S(int _x, int _y, int _z) : x(_x), y(_y), z(_z) { }
    int x, y, z;
};

S func(int a, int b)
{
    return S(a, b, a + b);
}


/// USAGE ///

S my_result = func( 5, 6 );

questionAnswers(5)

yourAnswerToTheQuestion