Questions marquées «constexpr»

constexpr est un modificateur introduit dans C ++ 11, qui informe le compilateur que la valeur d'une fonction ou d'une variable est connue ou peut être calculée au moment de la compilation. En tant que tel, il peut être utilisé comme constante dans des endroits où il ne pourrait pas l'être autrement.


14
Quand devez-vous utiliser la capacité constexpr en C ++ 11?
Il me semble qu'avoir une "fonction qui renvoie toujours 5" brise ou dilue le sens de "appeler une fonction". Il doit y avoir une raison, ou un besoin pour cette capacité, sinon ce ne serait pas en C ++ 11. Pourquoi est-il là? // preprocessor. #define MEANING_OF_LIFE 42 // constants: …
337 c++  c++11  constexpr 




4
Est-il possible d'utiliser std :: string dans une constexpr?
Utilisation de C ++ 11, Ubuntu 14.04, la chaîne d'outils par défaut de GCC . Ce code échoue: constexpr std::string constString = "constString"; erreur: le type 'const string {aka const std :: basic_string}' de la variable constexpr 'constString' n'est pas littéral ... parce que ... 'std :: basic_string' a un …

2
Constexpr implique-t-il en ligne?
Considérez la fonction intégrée suivante: // 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])); } et la version équivalente de constexpr: // Constexpr specifier version #include<iostream> #include<cstdlib> constexpr int f(const int …

2
Que signifie «empoisonner une fonction» en C ++?
À la toute fin du discours de Scott Schurr "Présentation constexpr" à la CppCon , il demande "Y a-t-il un moyen d'empoisonner une fonction"? Il explique ensuite que cela peut être fait (bien que de manière non standard) en: Mettre un throwdans une constexprfonction Déclarer un non résolu extern const …
96 c++  constexpr 


3
Constexpr vs macros
Où devrais-je préférer les macros et où devrais-je préférer constexpr ? Ne sont-ils pas fondamentalement les mêmes? #define MAX_HEIGHT 720 contre constexpr unsigned int max_height = 720;
92 c++  c++11  macros  constexpr 

3
Comment puis-je obtenir la profondeur d'un vecteur std :: multidimensionnel au moment de la compilation?
J'ai une fonction qui prend une dimension multidimensionnelle std::vectoret nécessite que la profondeur (ou le nombre de dimensions) soit transmise en tant que paramètre de modèle. Au lieu de coder en dur cette valeur, je voudrais écrire une constexprfonction qui prendra std::vectoret retournera la profondeur comme unsigned integervaleur. Par exemple: …



1
std :: pair <auto, auto> type de retour
Je jouais avec autoen std::pair. Dans le code ci-dessous, la fonction fest censée retourner un std::pairtype qui dépend d'un paramètre de modèle. Un exemple pratique: EXEMPLE 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == …


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.