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.


1
std :: function const correctness
Supposons que j'ai un type appelable comme ceci: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Notez que mutable_callablepossède un non-const operator()qui modifie une variable membre ..... Supposons maintenant que je crée un std::functionde mon type: std::function<int()> foo = mutable_callable{}; Maintenant, …

1
L'envergure peut-elle être constexpr?
Tous les constructeurs de std :: span sont déclarés constexpr, mais je n'arrive pas à faire fonctionner l'un d'eux dans un contexte constexpr. La suppression de la mise en commentaire de l'un des constexpr ci-dessous entraînera une erreur de compilation. #include <array> #include <span> int main() { constexpr int carray[3] …
11 c++  constexpr  c++20 



5
Affectation ternaire C ++ de lambda
Vous savez pourquoi l'extrait de code suivant ne se compile pas? Il se plaint d'une erreur "erreur: opérandes à?: Avoir différents types" auto lambda1 = [&](T& arg) { ... }; auto lambda2 = [&](T& arg) { ... }; auto lambda = condition ? lambda1 : lambda2;




1
Un modèle de variable peut-il être passé comme argument de modèle de modèle?
L'exemple absurde suivant ne se compile pas, mais existe-t-il un autre moyen de passer un modèle de variable comme argument de modèle de modèle? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, …




3
Puis-je utiliser std :: transform en place avec une politique d'exécution parallèle?
Si je ne me trompe pas, je peux faire std::transformfonctionner en place en utilisant la même plage qu'un itérateur d'entrée et de sortie. Supposons que j'ai un std::vectorobjet vec, alors j'écrirais std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) en utilisant une opération unaire appropriée unary_op. En utilisant la norme C ++ 17, je voudrais exécuter la …


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.