Preguntas etiquetadas con c++

C ++ es un lenguaje de programación de propósito general. Originalmente fue diseñado como una extensión de C y tiene una sintaxis similar, pero ahora es un lenguaje completamente diferente. Use esta etiqueta para preguntas sobre el código (que se compilará) con un compilador de C ++. Utilice una etiqueta específica de la versión para preguntas relacionadas con una revisión estándar específica [C ++ 11], [C ++ 14], [C ++ 17] o [C ++ 20], etc.


1
¿Está `string.assign (string.data (), 5)` bien definido o UB?
Un compañero de trabajo quería escribir esto: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Dije que regresar string_viewme inquietaba a priori y, además, el alias aquí me parecía UB. Puedo decir con certeza que line = strip_whitespace(line)en este caso es equivalente a line = std::string_view(line.data(), 5). …





1
¿Por qué se necesita static_cast en la implementación de gcc de is_nothrow_constructible?
Tomado de la implementación del CCG de type_traitspor qué se static_castnecesita aquí? 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
¿Cómo averiguar qué funciones generó el compilador?
Sé sobre las funciones generadas por el compilador, la regla de tres y la regla de cinco. En escenarios del mundo real, puede que no sea trivial averiguar exactamente cuáles de las funciones generadas por el compilador (constructores, operadores de asignación, destructor) fueron realmente creadas por el compilador. ¿Hay alguna …
11 c++  c++11 

1
Sort () no calificado: ¿por qué se compila cuando se usa en std :: vector y no en std :: array, y qué compilador es correcto?
Al llamar std::sort()a un 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)); } Tanto gcc como clang devuelven un error en el tipo en el std::array- dice clang error: uso del identificador no …
11 c++  c++17 


2
¿T tiene que ser un tipo completo para ser usado en `std :: declval <T>`?
Considere este ejemplo (viniendo de aquí ): #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; } Se compila …



1
std :: función const corrección
Supongamos que tengo un tipo invocable como este: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Tenga en cuenta que mutable_callabletiene una no constante operator()que modifica una variable miembro ..... Ahora suponga que creo un std::functionfuera de mi tipo: std::function&lt;int()&gt; foo …

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.