Un exemple qui vient souvent à l’esprit est: sizeof expression, où elle n’évalue pas l’expression mais détermine sa taille par type statique. Par exemple : int func(); sizeof(func()); C’est ma limite de pensée, donc s’il y a d’autres contextes non évalués, alors qu’est-ce qu’ils sont?
Dans bien des cas, lorsque vous retournez un local à partir d’une fonction, RVO intervient. Cependant, je pensais que l’utilisation explicite de std::move imposerait au moins un déplacement lorsque RVO ne se produit pas, mais que RVO est toujours appliqué lorsque cela est possible. Cependant, il semble que ce ne soit pas le cas. #include […]
Considérez ce code: #include #include class A { public: A(int data) : data_(data) { std::cout << "A(" << data_ << ")" << std::endl; } ~A() { std::cout << "~A()" << std::endl; } void a() { std::cout << data_ << std::endl; } private: int data_; }; class B { public: B(): a_(new A(13)) { std::cout << […]
La fonction one () accepte un paquet de parameters. La fonction deux () accepte deux. Chaque paquet est contraint à être enveloppé dans les types A et B. Pourquoi est-il impossible d’instancier deux () ? template struct A {}; template struct B {}; template void one(A …as) { } template void two(A …as, B …bs) […]
La norme OpenMP ne prend en compte que C ++ 98 (ISO / IEC 14882: 1998). Cela signifie qu’il n’y a pas de support standard pour OpenMP sous C ++ 03 ou même C ++ 11. Ainsi, tout programme utilisant C ++> 98 et OpenMP fonctionne en dehors des normes, ce qui implique que même […]
L’expansion du pack de parameters est inversée par le compilateur VS2015. J’ai le code suivant: #include #include template void f_Swallow(T &&…) { } template std::vector f(T …arg) { std::vector result; f_Swallow ( [&]() { result.push_back(arg); return true; } ()… ) ; return result; } using namespace std; int main() { auto vec = f(1,2,3,4); for […]
D’après ce que j’ai compris, un caractère peut char16_t des caractères ASCII, tandis que char16_t et char32_t peuvent char32_t des caractères Unicode, un pour la variété 16 bits et un autre pour la variante 32 bits (Dois-je dire “a” au lieu de “la”?). Mais je me demande alors quel est le but du wchar_t . […]
Note: Cette question concerne C ++ 11. La réponse à la même question en C ++ 17 (ou versions ultérieures) peut avoir changé. Pour plus de détails: std :: lock_guard ou std :: scoped_lock? Lorsque nous voulons verrouiller plusieurs std::mutex , nous utilisons std::lock() . Mais std::lock() ne fournit pas de fonctionnalité RAII. Lorsque nous […]
J’utilise Emacs 23.3.1 (paquet Ubuntu, Oneiric) et emacs ne semble pas comprendre les nouveaux mots-clés C ++ 11, constexpr, thread_local, etc. En outre, il ne comprend pas que «>> est maintenant autorisé dans les parameters du modèle, ou la nouvelle syntaxe de la classe ‘enum’. Y a-t-il un module mis à jour ou alternatif quelque […]
Related: La fonction renvoyant constexpr ne comstack pas Je pense que l’utilité de constexpr est limitée en C ++ 11 en raison de l’impossibilité de définir deux fonctions qui auraient autrement la même signature, mais que l’une soit constexpr et l’autre non constexpr. En d’autres termes, il serait très utile d’avoir, par exemple, un constructeur […]