durante la visualizzazione di una delle mie vecchie domande su constexpr mi sono imbattuto in un commento molto importante (IMHO). In pratica si riduce a: (questo è legale C++ 11 :()Perché constexpr funziona con le funzioni impure
constexpr double f(bool b)
{
return b? 42:42/(rand()+1); // how pure is rand ;)
}
La mia domanda è che cosa è la ragione per cui questo è consentito dallo standard Poiché Im un grande fan di trasparenza referenziale spero. hanno una buona ragione :) e mi piacerebbe saperlo.
BTW vi è correlato Q ma la maggior parte della A non menziona nemmeno la cosa pura, o quando lo fanno non specificano il ragionamento per cui std lo consente. Relation between constexpr and pure functions
rand() è un constexpr? – Yakk
no it isnt, ecco perché ho inserito;) nei commenti – NoSenseEtAl