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.


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
`String.assign (string.data (), 5)` est-il bien défini ou UB?
Un collègue voulait écrire ceci: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); J'ai dit que le retour string_viewme mettait mal à l'aise a priori , et en plus, le pseudonyme ici me semblait UB. Je peux dire avec certitude que line = strip_whitespace(line)dans ce cas est …





1
Pourquoi static_cast est-il nécessaire dans l'implémentation de is_nothrow_constructible par gcc?
Tiré de la mise en œuvre du CCG, type_traitspourquoi est-il static_castnécessaire ici? template <typename _Tp, typename... _Args> struct __is_nt_constructible_impl : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> {}; template <typename _Tp, typename _Arg> struct __is_nt_constructible_impl<_Tp, _Arg> : public integral_constant<bool, // Why is `static_cast` needed here? noexcept(static_cast<_Tp>(declval<_Arg>()))> {};


3
Comment savoir quelles fonctions le compilateur a généré?
Je connais les fonctions générées par le compilateur, la règle de trois et la règle de cinq. Dans les scénarios du monde réel, il peut ne pas être trivial de déterminer exactement quelles fonctions générées par le compilateur (constructeurs, opérateurs d'affectation, destructeur) ont été réellement créées par le compilateur. Existe-t-il …
11 c++  c++11 

1
Sort non qualifié () - pourquoi compile-t-il lorsqu'il est utilisé sur std :: vector et non sur std :: array, et quel compilateur est correct?
Lorsque vous faites appel std::sort()à std::array: #include <vector> #include <array> #include <algorithm> int main() { std::vector<int> foo{4, 1, 2, 3}; sort(begin(foo), end(foo)); std::array<int, 4> foo2{4, 1, 2, 3}; sort(begin(foo2), end(foo2)); } Gcc et clang renvoient tous deux une erreur sur le tri sur std::array- clang dit erreur: utilisation de l'identifiant …
11 c++  c++17 



2
T doit-il être un type complet pour être utilisé dans `std :: declval <T>`?
Considérez cet exemple (venant d' ici ): #include &lt;type_traits&gt; #include &lt;iostream&gt; template &lt;typename U&gt; struct A { }; struct B { template &lt;typename F = int&gt; A&lt;F&gt; f() { return A&lt;F&gt;{}; } using default_return_type = decltype(std::declval&lt;B&gt;().f()); }; int main() { B::default_return_type x{}; std::cout &lt;&lt; std::is_same&lt; B::default_return_type, A&lt;int&gt;&gt;::value; } Il compile …

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.