Vés al contingut

C++14

De la Viquipèdia, l'enciclopèdia lliure
C++14

Tipusedició d'estàndard ISO i programming language specification (en) Tradueix Modifica el valor a Wikidata
Versió inicial15 desembre 2014 Modifica el valor a Wikidata
Epònim2014 Modifica el valor a Wikidata
Característiques tècniques
PlataformaC standard library
Més informació
Lloc webiso.org… (anglès) Modifica el valor a Wikidata


C++11 Modifica el valor a Wikidata
C++17 Modifica el valor a Wikidata

C++14 és una versió de l'estàndard ISO / IEC 14882 per al llenguatge de programació C++. Pretén ser una petita extensió sobre C++11, que inclou principalment correccions d'errors i petites millores, i va ser substituïda per C++17. La seva aprovació es va anunciar el 18 d'agost de 2014. C++14 es va publicar com a ISO/IEC 14882:2014 el desembre de 2014.[1]

Noves característiques de l'idioma

[modifica]

Aquestes són les funcions afegides al llenguatge bàsic de C++14.

Deducció de tipus de retorn de funció

[modifica]

C++11 va permetre que les funcions lambda deduïssin el tipus de retorn en funció del tipus d'expressió donada a la instrucció de retorn. C++14 proporciona aquesta capacitat a totes les funcions. També amplia aquestes instal·lacions a funcions lambda, permetent la deducció de tipus de retorn per a funcions que no són de l' return expression;.[2]

Per tal d'induir la deducció del tipus de retorn, la funció s'ha de declarar amb auto com a tipus de retorn, però sense l'especificador del tipus de retorn final a C++11:

auto DeduceReturnType(); // Return type to be determined.

Si s'utilitzen diverses expressions de retorn en la implementació de la funció, totes han de deduir el mateix tipus.[3]

Les funcions que dedueixen els seus tipus de retorn es poden declarar cap endavant, però no es poden utilitzar fins que no s'hagin definit. Les seves definicions han d'estar disponibles per a la unitat de traducció que les utilitza.

La recursivitat es pot utilitzar amb una funció d'aquest tipus, però la crida recursiva s'ha de produir després d'almenys una instrucció de retorn a la definició de la funció: [4]

auto Correct(int i)
{
 if (i == 1)
 return i; // return type deduced as int

 return Correct(i-1)+i; // ok to call it now
}

auto Wrong(int i)
{
 if (i != 1)
 return Wrong(i-1)+i; // Too soon to call this. No prior return statement.

 return i; // return type deduced as int
}

Referències

[modifica]
  1. «ISO/IEC 14882:2014» (en anglès). ISO.
  2. Wong, Michael. «The View from the C++ Standard meeting April 2013 Part 1» (en anglès). C/C++ Cafe, 30-04-2013. [Consulta: 27 gener 2016].
  3. Merrill, Jason. «N3638 Return type deduction for normal functions (Revision 5)» (en anglès), 17-04-2013. [Consulta: 14 juny 2013].
  4. Merrill, Jason. «N3638 Return type deduction for normal functions (Revision 5)» (en anglès), 17-04-2013. [Consulta: 14 juny 2013].