Questions marquées «c++»

C ++ est un langage de programmation à usage général. Il a été initialement conçu comme une extension de C et a une syntaxe similaire, mais c'est maintenant un langage complètement différent. Utilisez cette balise pour les questions sur le code (à compiler) avec un compilateur C ++. Utilisez une balise spécifique à la version pour les questions liées à une révision standard spécifique [C ++ 11], [C ++ 14], [C ++ 17] ou [C ++ 20], etc.

2
Approches pour fonctionner SFINAE en C ++
J'utilise beaucoup la fonction SFINAE dans un projet et je ne sais pas s'il existe des différences entre les deux approches suivantes (autres que le style): #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template …
40 c++  sfinae 


2
Pourquoi remove_reference ne fonctionne-t-il pas sur les fonctions?
Ran dans quelque chose d'étrange lors de la métaprogrammation de modèle l'autre jour. Cela revient essentiellement à cette affirmation qui ne passe pas (comme je m'y attendais). static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Au début, je pensais que je faisais une erreur syntaxique en définissant une référence de fonction, mais cette assertion passe, montrant …
38 c++  templates  types  c++17 

4
Modèle de méta-programmation
Quelqu'un peut-il m'expliquer pourquoi la première méthode de méta-programmation de modèle va en boucle infinie, mais la seconde fonctionne correctement. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static const …



4
Surcharger une fonction à l'aide de modèles
J'essaie de définir une fonction à l'aide de modèles et je veux que le nom de type soit int ou anEnum (une énumération spécifique que j'avais définie). J'ai essayé ce qui suit mais j'ai échoué: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> …


2
Est-il légal d'allouer de nouveau un pointeur pour fonctionner?
Les pointeurs vers des fonctions ne sont pas de simples pointeurs de données car ils ne peuvent pas être stockés dans un pointeur void *. Néanmoins, il semble que je puisse stocker la copie d'un pointeur de fonction dans la mémoire dynamique (en gcc et clang) comme dans le code …
33 c++ 


3
Décltype C ++ et parenthèses - pourquoi?
Le sujet a été discuté auparavant , mais ce n'est pas un doublon. Lorsque quelqu'un demande la différence entre decltype(a)et decltype((a)), la réponse habituelle est - aest une variable, (a)est une expression. Je trouve cette réponse insatisfaisante. Tout d'abord, ac'est aussi une expression. Les options pour une expression primaire incluent, …

4
Pourquoi deux clauses using se résolvant au même type sont-elles considérées comme ambigües dans gcc
J'ai deux classes de base avec des clauses using class MultiCmdQueueCallback { using NetworkPacket = Networking::NetworkPacket; .... } class PlcMsgFactoryImplCallback { using NetworkPacket = Networking::NetworkPacket; .... } Je déclare ensuite une classe class PlcNetwork : public RouterCallback, public PlcMsgFactoryImplCallback, public MultiCmdQueueCallback { private: void sendNetworkPacket(const NetworkPacket &pdu); } le compilateur …



4
Comment s'appelle le (…) en C et C ++?
L'une des utilisations de ...est de désigner des entités variadiques en C et C ++. Quel est son nom? Est-il classé comme opérateur ou autre chose lorsqu'il est utilisé de cette façon? D'autres détails concernant ...? Edit: je connais le but de .... Je pose des questions sur son nom …

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.