Questions marquées «c++20»

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.

1
Est-ce que `égalité_comparable_avec` doit exiger` common_reference`?
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 …

1
Définition hors classe C ++ 20 dans une classe modèle
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 …
12 c++  templates  c++20 




2
Passer d'un concept à une fonction
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 …


4
Changement de rupture en C ++ 20 ou régression dans clang-trunk / gcc-trunk lors de la surcharge de comparaison d'égalité avec une valeur de retour non booléenne?
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{};} …

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 

1
Pourquoi std :: span n'a pas d'opérateurs de comparaison?
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 …
10 c++  std  c++20  std-span 


1
Serons-nous capables de construire des conteneurs avec des vues en C ++ 20?
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 …
10 c++  c++20  range-v3 

1
Les expressions require sont-elles autorisées à «capturer» les variables de la portée englobante?
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 …

1
Création d'objet implicite non spécifié
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 …


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.