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_result
lub 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 );