preguntar acerca de language-lawyer

6
réponses

C++11 a introduit un modèle de mémoire standardisé. Qu’est-ce que cela signifie? Et comment cela va-t-il affecter la programmation C++?

C++11 a introduit un modèle de mémoire standardisé, mais qu'est-ce que cela signifie exactement? Et comment cela va-t-il affecter la programmation C++? Cet article (par Gavin Clarke qui cite Herb Sutter) dit que, Le modèle de mémoire signifie qu …
demandé sur 1970-01-01 00:33:31
7
réponses

Pourquoi le caractère d’espace n’a-t-il pas été choisi pour les séparateurs de 14 chiffres C++?

À partir de C++14, grâce à n3781 (qui en soi ne répond pas à cette question), nous pouvons écrire du code comme suit: const int x = 1'234; // one thousand two hundred and thirty four Le but est d'améliorer le code comme ceci: const int y = 100 …
demandé sur 1970-01-01 00:33:35
3
réponses

Initialisation d’un tableau de zéros

Il est bien connu que les initialiseurs manquants pour un tableau de scalaires sont par défaut à zéro. int A[5]; // Entries remain uninitialized int B[5]= { 0 }; // All entries set to zero Mais est-ce (ci-dessous) garanti ? int C[5]= { }; // All …
demandé sur 1970-01-01 00:33:36
7
réponses

Le comportement de la division en virgule flottante par zéro

Considérez #include <iostream> int main() { double a = 1.0 / 0; double b = -1.0 / 0; double c = 0.0 / 0; std::cout << a << b << c; // to stop compilers from optimising out the code. } J'ai toujours pens …
demandé sur 1970-01-01 00:33:37
1
réponses

La taille de std::array est-elle définie par standard

En C++11 std::array est défini pour avoir un stockage et des performances contigus qui ne sont pas pires qu'un tableau, mais je ne peux pas décider si les différentes exigences de la norme impliquent que std::array a la même taille et la même disposi …
demandé sur 1970-01-01 00:33:33
2
réponses

Utilisation de modèles d’alias pour sfinae: le langage le permet-il?

Je viens de découvrir la technique suivante. Il semble très proche de l'un des concepts proposés syntaxe, fonctionne parfaitement sur Clang, GCC et MSVC. template <typename T, typename = typename std::enable_if<std::is_rvalue_reference<T&am …
demandé sur 1970-01-01 00:33:38
2
réponses

Est l’astérisque en option lors de l’appel d’un pointeur de fonction?

je ne pouvais pas trouver une réponse à ce n'importe où. Je viens de lire K&R et vu l'appel d'un pointeur de fonction comme ceci: (*ptr)(arg1, arg2); je me souviens très bien, cependant, d'avoir vu quelqu'un utiliser comme ceci: ptr(arg1, arg …
demandé sur 1970-01-01 00:33:34
4
réponses

Type incomplète n’est pas autorisé dans une classe, mais il est permis à un modèle de classe

le code suivant n'est pas valide: struct foo { struct bar; bar x; // error: field x has incomplete type struct bar{ int value{42}; }; }; int main() { return foo{}.x.value; } C'est assez clair, comme foo::bar est considéré comme …
demandé sur 1970-01-01 00:33:38
2
réponses

Est-ce que memcpy d’un type de construction ou d’affectation trivial-copiable?

disons que vous avez un objet de type T et un tampon mémoire convenablement aligné alignas(T) unsigned char[sizeof(T)]. Si vous utilisez std::memcpy copier à partir de l'objet de type Tunsigned char array, est considéré que la copie de la constructi …
demandé sur 1970-01-01 00:33:34
5
réponses

Pourquoi pas un destructeur être marqué constexpr?

En C++, vous pouvez déclarer beaucoup de choses comme constexpr: variables, fonctions (y compris les fonctions des membres et les opérateurs), constructeurs, et depuis C++1z, aussi if instructions et les expressions lambda. Toutefois, la déclaration …
demandé sur 1970-01-01 00:33:37