Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Rozdział2
NowoczesnyC++
intmain()
{
autovalue
=
AutoFunctionFromReturn(1);
cout<<value<<endl;
return0;
}
Typzwracanyprzezfunkcję
AutoFunctionFromReturn
wlistingu2-11jestdedukowany
automatycznie.Kompilatorzbadatypzmiennejzwracanejztejfunkcjiiużyjegodowy-
dedukowaniatypu,jakimazostaćzwrócony.Działatopoprawnie,gdyżkompilator
dysponujewewnątrzfunkcjiwszystkimiinformacjami,jakichpotrzebujedowydedu-
kowaniatypu.Zwracanajestzmienna
parameter
;tymsamymkompilatormożeużyćjej
typujakotypuzwracanegoprzeztęfunkcję.
Sprawyniecosiękomplikują,jeślipotrzebujemyzbudowaćprogramprzyużyciu
kompilatorazgodnegozC++11.Zbudowaniekoduzlistingu2-11przyużyciuC++11
dajewwynikunastępującybłąd:
main.cpp:5:1:error:'auto'returnwithouttrailingreturntype
autoAutoFunctionFromReturn(intparameter)
Listing2-12zawierafunkcjęzautomatycznądedukcjątypuzwracanego,któradziała
wC++11.
Listing2-12.DedukowanietypuzwracanegowC++11
#include<iostream>
usingnamespacestd;
autoAutoFunctionFromReturn(intparameter)->int
{
returnparameter;
}
intmain()
{
autovalue
=
AutoFunctionFromReturn(1);
cout<<value<<endl;
38