Con il nuovo standard C++ 11, quando devo usare la parola chiave inline
sulla parola chiave constexpr
? La parola chiave constexpr
offre un'ulteriore ottimizzazione oltre inline
oppure asserisce semplicemente che le cose devono essere calcolate in fase di compilazione?inline vs. constexpr?
Perché il constexpr
funziona nel GCC in alcuni casi in cui la chiamata non è costante, ad esempio chiamando foo(x)
su una variabile non constexpr
? Si tratta di un bug nel GCC o è effettivamente parte dello standard?
In base a [questa domanda] (http://stackoverflow.com/q/7065200/636019), quando le funzioni 'constexpr' non vengono utilizzate in un contesto che richiede un'espressione costante, il compilatore non è obbligato a calcolare l'espressione in fase di compilazione. – ildjarn
ma ancora specifica che il calcolo * può * essere eseguito in fase di compilazione. Così come con 'inline', non si tratta di ottimizzazione, ma può fornire informazioni aggiuntive che il compilatore può utilizzare per ottimizzare. – jalf
Giusto, stavo solo prendendo in giro l'uso della parola "must". : -] – ildjarn