C ++ 20 est la cible de la version de C ++ après C ++ 17. Cette balise doit être utilisée (avec la balise C ++) pour les questions sur les fonctionnalités C ++ en bonne voie pour C ++ 20.
Le conceptequality_comparable_with<T, U> est destiné à déclarer que les objets de type Tet Upeuvent être comparés égaux les uns aux autres, et s'ils le sont, alors cela a la signification attendue. C'est très bien. Cependant, ce concept doit également common_reference_t<T&, U&>exister. L'impulsion principale pour common_referenceet sa fonctionnalité associée semble être …
Jusqu'à la norme C ++ 20 de C ++, lorsque nous voulions définir un opérateur hors classe qui utilise certains membres privés d'une classe de modèle, nous utilisions une construction similaire à ceci: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename …
Je cherche un moyen d'identifier les lambdas vides (sans capture) des autres lambdas dans une fonction de modèle. J'utilise actuellement C ++ 17 mais je suis également curieux de connaître les réponses C ++ 20. Mon code ressemble à ceci: template<typename T> auto func(T lambda) { // The aguments of …
Considérez les trois structs suivants: class blub { int i; char c; blub(const blub&) {} }; class blob { char s; blob(const blob&) {} }; struct bla { blub b0; blob b1; }; Sur les plates-formes typiques où intest de 4 octets, les tailles, les alignements et le remplissage total …
Nous sommes en 2020 maintenant et C ++ 20 arrive, avec la fonctionnalité tant attendue des modules C ++. Mais après avoir regardé quelques discussions sur CppCon, je trouve que les modules C ++ sont dans un endroit étrange, en particulier pour les gestionnaires de paquets Linux (pacman, apt, emerge, …
Puisque les concepts sont définis comme des prédicats au moment de la compilation, est-il également possible de réutiliser ces prédicats pour les algorithmes au moment de la compilation? Par exemple, serait-il possible de vérifier si tous les types d'un tuple sont conformes à un concept? Pour autant que je l'ai …
Le code suivant compile correctement avec clang-trunk en mode c ++ 17 mais se casse en mode c ++ 2a (c ++ 20 à venir): // Meta struct describing the result of a comparison struct Meta {}; struct Foo { Meta operator==(const Foo&) {return Meta{};} Meta operator!=(const Foo&) {return Meta{};} …
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] …
N'est-ce pas std::spanconçu comme une référence légère aux sous-régions du tableaustd::vector / std::array/ plain et similaires? Ne devrait-il pas également contenir des opérateurs de comparaison dans son API, pour être cohérent avec eux? Quel était le raisonnement derrière l'exclusion? Note: par les opérateurs de comparaison, je veux dire soit l'ensemble …
Dans la norme C ++ 20, il est dit que les types de tableau sont de type implicite à vie . Cela signifie-t-il qu'un tableau d'un type de durée de vie non implicite peut être créé implicitement? La création implicite d'un tel tableau ne provoquerait pas la création des éléments …
Les gammes arrivent en C ++ avec la version standard C ++ 20. Ma question: serons-nous en mesure de construire des conteneurs de bibliothèque standard (existants) avec n'importe quelle gamme? Et plus important encore, avec des vues de portée? Par exemple, cela va-t-il: #include <vector> #include <iostream> #include <ranges> int …
Dans l'exemple suivant, les arguments de fonction sont utilisés pour tester avec une expression require si une expression les utilisant est bien formée. L'expression require ne prend aucun argument; il utilise directement les variables de la portée de la fonction: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t …
Depuis P0593 La création implicite d'objets pour la manipulation d'objets de bas niveau a été acceptée, les objets peuvent maintenant être créés implicitement en C ++ 20. Plus précisément, le libellé introduit par la proposition permet à certaines opérations (telles que std::malloc) de créer et de démarrer automatiquement la durée …
Cette question découle de ce commentaire: explication de la durée de vie Lambda pour les coroutines C ++ 20 concernant cet exemple: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } La question est donc de savoir si l'exécution de la …
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.