Domande taggate «c++»

C ++ è un linguaggio di programmazione generico. È stato originariamente progettato come estensione di C e ha una sintassi simile, ma ora è un linguaggio completamente diverso. Utilizzare questo tag per domande sul codice (da compilare) compilato con un compilatore C ++. Utilizzare un tag specifico della versione per domande relative a una revisione standard specifica [C ++ 11], [C ++ 14], [C ++ 17] o [C ++ 20], ecc.


1
`String.assign (string.data (), 5)` è ben definito o UB?
Un collega voleva scrivere questo: std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); Ho detto che il ritorno string_viewmi rendeva inquieto a priori e, inoltre, l'alias qui mi sembrava UB. Posso affermare con certezza che line = strip_whitespace(line)in questo caso equivale a line = std::string_view(line.data(), 5). Credo …





1
Perché static_cast è necessario per l'implementazione di is_nothrow_constructible da parte di gcc?
Tratto dall'implementazione GCC del type_traitsperché è static_castnecessario qui? 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
Come scoprire quali funzioni ha generato il compilatore?
Conosco le funzioni generate dal compilatore, la regola di tre e la regola di cinque. In scenari del mondo reale, potrebbe non essere banale capire esattamente quale delle funzioni generate dal compilatore (costruttori, operatori di assegnazione, distruttore) siano state effettivamente create dal compilatore. Esiste un modo per elencare le funzioni …
11 c++  c++11 

1
Unqualified sort () - perché viene compilato se utilizzato su std :: vector e non su std :: array, e quale compilatore è corretto?
Quando si chiama std::sort()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)); } Sia gcc che clang restituiscono un errore nell'ordinamento sul std::array- dice clang errore: uso dell'identificatore non dichiarato 'sort'; intendevi "std …
11 c++  c++17 


2
T deve essere un tipo completo da usare in `std :: declval <T>`?
Considera questo esempio (proveniente da qui ): #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; } Si compila …



1
std :: function const correttezza
Supponiamo che io abbia un tipo richiamabile in questo modo: struct mutable_callable { int my_mutable = 0; int operator()() { // Not const return my_mutable++; } }; Nota che mutable_callableha una non const operator()che modifica una variabile membro ..... Supponiamo ora di creare un std::functionfuori dal mio tipo: std::function&lt;int()&gt; foo …

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.