Lors de l'implémentation d'une fonction de rappel en C ++, dois-je toujours utiliser le pointeur de fonction de style C: void (*callbackFunc)(int); Ou devrais-je utiliser std :: function: std::function< void(int) > callbackFunc;
Traditionnellement, le moyen standard et portable d'éviter les inclusions d'en-têtes multiples en C ++ était / consiste à utiliser le #ifndef - #define - #endifschéma de directives pré-compilateur également appelé schéma de macro-garde (voir l'extrait de code ci-dessous). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP ... #endif Dans la plupart des implémentations / …
Parfois, je dois utiliser std::threadpour accélérer mon application. Je sais aussi qu'il join()attend la fin d'un fil. C'est facile à comprendre, mais quelle est la différence entre appeler detach()et ne pas l'appeler? Je pensais que sans detach(), la méthode du thread fonctionnera en utilisant un thread indépendamment. Ne pas se …
C de 11 Introduit les littéraux définis par l' utilisateur qui permettra l'introduction de nouvelle syntaxe littérale basée sur les littéraux existants ( int, hex, string, float) de sorte que tout type sera en mesure d'avoir une présentation littérale. Exemples: // imaginary numbers std::complex<long double> operator "" _i(long double d) …
J'ai été en quelque sorte surpris que le code suivant compile et s'exécute (vc2012 & gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // …
D'après ce que j'ai vu dans cet article, j'ai décidé de commencer à lire le livre Effective C ++ . Mais maintenant qu'il y a beaucoup de nouvelles fonctionnalités à cause de C ++ 11 et que quelques-unes des bonnes pratiques ont changé, je ne sais pas si c'est réellement …
La norme définit-elle précisément ce que je peux faire avec un objet une fois qu'il a été déplacé? J'avais l'habitude de penser que tout ce que vous pouvez faire avec un objet déplacé est de le détruire, mais cela ne serait pas suffisant. Par exemple, prenez le modèle de swapfonction …
Le comportement de court-circuit des opérateurs &&et ||est un outil étonnant pour les programmeurs. Mais pourquoi perdent-ils ce comportement lorsqu'ils sont surchargés? Je comprends que les opérateurs ne sont que du sucre syntaxique pour les fonctions, mais les opérateurs pour boolont ce comportement, pourquoi devrait-il être limité à ce type …
(Remarque: cette question concerne le fait de ne pas avoir à spécifier le nombre d'éléments et de toujours permettre aux types imbriqués d'être directement initialisés.) Cette question traite des utilisations restantes pour un tableau C comme int arr[20];. Sur sa réponse , @James Kanze montre l'un des derniers bastions des …
Être capable de créer et de manipuler des chaînes pendant la compilation en C ++ a plusieurs applications utiles. Bien qu'il soit possible de créer des chaînes de compilation en C ++, le processus est très lourd, car la chaîne doit être déclarée comme une séquence variadique de caractères, par …
Je n'ai pas besoin de terminer correctement le thread ou de le faire répondre à une commande "terminer". Je suis intéressé à terminer le thread avec force en utilisant du C ++ 11 pur.
Prenons le cas d'une fonction basée sur un modèle avec des arguments de modèle variadiques: template<typename Tret, typename... T> Tret func(const T&... t); Maintenant, j'ai un tuple tde valeurs. Comment appeler en func()utilisant les valeurs de tuple comme arguments? J'ai lu sur l' bind()objet fonction, avec call()fonction, et aussi sur …
Je ne comprends pas pourquoi je ferais ça: struct S { int a; S(int aa) : a(aa) {} S() = default; }; Pourquoi ne pas simplement dire: S() {} // instead of S() = default; pourquoi introduire une nouvelle syntaxe pour cela?
Comme le titre l'indique, j'essaie de trouver un moyen de générer des nombres aléatoires en utilisant la nouvelle <random>bibliothèque C ++ 11 . Je l'ai essayé avec ce code: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); Le problème avec le code que j'ai est que chaque fois que je le compile et …
Étant donné un lambda, est-il possible de déterminer son type de paramètre et son type de retour? Si oui, comment? Fondamentalement, je veux lambda_traitsce qui peut être utilisé des manières suivantes: auto lambda = [](int i) { return long(i*10); }; lambda_traits<decltype(lambda)>::param_type i; //i should be int lambda_traits<decltype(lambda)>::return_type l; //l should …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.