C++14

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun

C++14 on ISO:n 18.8. 2014 hyväksymä C++ ohjelmointikielen standardi ISO/IEC 14882:2014.[1] Standardi korvasi edellisen ISO/IEC 14882:2011 standardin (C++11).

Standardi koostuu suurelta osin pienemmistä parannuksista ja muutoksista kuin edellinen C++11. Standardin seuraava versio C++17 ennakoidaan julkaistavaksi vuoden 2017 aikana.

Muutokset edellisestä[muokkaa | muokkaa wikitekstiä]

Eräitä huomioitavia muutoksia edelliseen standardiin verrattuna:[2][3]

  • anonyymit inline funktiot (lambda-operaattorit)
  • paluutyypin automaattinen päättely (auto tyyppi)
  • deprecated merkintä class [[deprecated]] ongelmakohde {...};
  • binääriliteraalit (kuten: int val = 0b11110000;)
  • laajennettu vakiolauseke (constexpr) C++11 standardista[4]
  • variable templates mallit[5]

Vakiolausekelaajennus[muokkaa | muokkaa wikitekstiä]

Vakiolauseke constexpr on laajennettu ja sallii lisää toimintoja.[6]

Ehtolauseet if ja switch on lisätty sallittuihin toimintoihin.[6]

constexpr int abs(int x) 
{
  if (x < 0)
    x = -x;
  return x;
}

Toistorakenteet for, while ja do-while on lisätty sallittuihin toimintoihin.[6]

Paluutyypin päättely[muokkaa | muokkaa wikitekstiä]

Muuttujatyypin päättely paluuarvosta:[7]

std::map<int, std::string> m;
auto it = m.find(42); // palauttaa iteraattorin, joka viittaa pariin

Päättely voidaan laajentaa koskemaan metodin paluuarvoa:[8]

string& lookup();

decltype(auto) look_up_a_string() { return lookup(); }

Metodi look_up_a_string() palauttaa string&.

Lambda-operaattorit[muokkaa | muokkaa wikitekstiä]

Anonyymeillä inline-funktioilla (lambda-operaattoreilla) on mahdollista lisätä lyhyitä metodeja:[3]

std::vector<int> v;
std::for_each(v.begin(), v.end(), [](int i) { return i+2; });

Variable templates[muokkaa | muokkaa wikitekstiä]

Muuttuvatyyppisen datan käsittelyn puutteen korjaamiseen on esitelty variable templates.[3][5]

template<typename T> constexpr T pi = T(3.14159265358979323846);

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. ISO/IEC 14882:2014 ISO. Viitattu 25.1.2017.
  2. The C++14 Standard: What You Need to Know Dr Dobb's.
  3. a b c C++14 Language Extensions Viitattu 6.2.2017.
  4. constexpr specifier Viitattu 6.2.2017.
  5. a b Gabriel Dos Reis: Variable Templates (Revision 1) Viitattu 6.2.2017.
  6. a b c Smith, Richard: Relaxing constraints on constexpr functions Viitattu 8.3.2017.
  7. auto specifier Viitattu 6.2.2017.
  8. decltype(auto) Viitattu 6.2.2017.

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]