Domande taggate «constexpr»

constexpr è un modificatore introdotto in C ++ 11, che informa il compilatore che il valore di una funzione o variabile è noto o può essere calcolato in fase di compilazione. In quanto tale, può essere utilizzato come costante in luoghi dove altrimenti non potrebbe essere.


14
Quando utilizzare la funzionalità constexpr in C ++ 11?
Mi sembra che avere una "funzione che restituisce sempre 5" stia rompendo o diluendo il significato di "chiamare una funzione". Ci deve essere un motivo o una necessità per questa funzionalità o non sarebbe in C ++ 11. Perché è lì? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int …
337 c++  c++11  constexpr 




4
È possibile usare std :: string in un constexpr?
Utilizzando C ++ 11, Ubuntu 14.04, toolchain predefinito GCC . Questo codice ha esito negativo: constexpr std::string constString = "constString"; errore: il tipo 'const string {aka const std :: basic_string}' della variabile constexpr 'constString' non è letterale ... perché ... 'std :: basic_string' ha un distruttore non banale È possibile …

2
Constexpr implica inline?
Considera la seguente funzione inline: // Inline specifier version #include<iostream> #include<cstdlib> inline int f(const int x); inline int f(const int x) { return 2*x; } int main(int argc, char* argv[]) { return f(std::atoi(argv[1])); } e la versione equivalente di constexpr: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int …

2
Cosa significa "avvelenare una funzione" in C ++?
Alla fine del discorso di Scott Schurr "Introducing constexpr" al CppCon , chiede "C'è un modo per avvelenare una funzione"? Spiega quindi che questo può essere fatto (anche se in modo non standard): Mettere un throwin una constexprfunzione Dichiarare un irrisolto extern const char* Riferimento all'irrisolto externinthrow Sento di essere …
96 c++  constexpr 


3
Come posso ottenere la profondità di uno std :: vector multidimensionale al momento della compilazione?
Ho una funzione che accetta un multidimensionale std::vectore richiede che la profondità (o il numero di dimensioni) sia passata come parametro del modello. Invece di codificare questo valore, vorrei scrivere una constexprfunzione che prenderà std::vectore restituisca la profondità come unsigned integervalore. Per esempio: std::vector<std::vector<std::vector<int>>> v = { { { 0, …



1
std :: pair <auto, auto> tipo di ritorno
Stavo giocando con autodentro std::pair. Nel codice seguente, la funzione fdovrebbe restituire un std::pairtipo che dipende da un parametro template. Un esempio funzionante: ESEMPIO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return …



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.