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.

3
Perché la dimensione di un array fa parte del suo tipo?
Durante la lettura del libro C ++ Primer, mi sono imbattuto in questa affermazione: "Il numero di elementi in un array fa parte del tipo di array". Quindi volevo scoprirlo usando il seguente codice: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; …
14 c++  arrays  c++11 


3
Un nome di classe completo fino all'ambito globale è mai richiesto per le definizioni di funzioni membro fuori linea?
Questa domanda mi ha fatto domandare se sia mai utile / necessario qualificare completamente i nomi di classe (incluso l'operatore di ambito globale) in una definizione di funzione membro fuori classe. Da un lato, non l'ho mai visto prima (e la sintassi per farlo correttamente sembra oscura). Dall'altro, la ricerca …


1
Perché std :: swap non funziona su elementi <bool> vettoriali in Clang / Win?
Ho un codice come questo: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Argomenti sulla sanità mentale a vector&lt;bool&gt;parte, questo funzionava perfettamente su: Clang per Mac Visual Studio per Windows GCC per Linux Quindi ho provato a costruirlo con Clang su Windows e ho ricevuto …


1
Il costruttore di std :: vector range può invocare conversioni esplicite?
Il seguente programma è ben formato? #include &lt;vector&gt; struct A { explicit A(int) {} }; int main() { std::vector&lt;int&gt; vi = {1, 2, 3, 4, 5}; std::vector&lt;A&gt; va(vi.begin(), vi.end()); } Secondo C ++ 17 [sequence.reqmts], il requisito per X u(i, j); dove si Xtrova un contenitore sequenza, è: Tdeve essere …
14 c++  c++17 

3
Sovraccarico di una funzione lambda
Come sovraccaricare una semplice funzione lambda locale? SSE del problema originale: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', …

3
La funzione modello non funziona per la funzione da puntatore a membro che accetta const ref
Ultimamente ho scritto una funzione modello per risolvere alcune ripetizioni di codice. Sembra così: template&lt;class T, class R, class... Args&gt; R call_or_throw(const std::weak_ptr&lt;T&gt;&amp; ptr, const std::string&amp; error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) { return std::invoke(fun, *sp, args...); } else { throw std::runtime_error(error.c_str()); } } int …
14 c++  templates 

3
std :: bit_cast con std :: array
Nel suo recente discorso "Digitare la punzonatura nel moderno C ++" Timur Doumler ha affermato che std::bit_castnon può essere utilizzato per eseguire il bit di bit floatin un unsigned char[4]perché gli array in stile C non possono essere restituiti da una funzione. Dovremmo usare std::memcpyo attendere fino a C ++ …

1
Come funziona l'implementazione di c ++ nullptr?
Sono curioso di sapere come nullptrfunziona. Gli standard N4659 e N4849 dicono: deve avere tipo std::nullptr_t; non puoi prendere il suo indirizzo; può essere convertito direttamente in un puntatore e un puntatore in membro; sizeof(std::nullptr_t) == sizeof(void*); la sua conversione in boolè false; il suo valore può essere convertito in …

3
Inizializzazione elenco copie? Perché questa compilazione?
Sto usando Microsoft Visual Studio Community 2019, V16.5.2. Voglio testare l' inizializzazione dell'elenco Si prega di consultare il seguente programma di test: #include &lt;string&gt; void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Questo viene compilato senza errori e avvisi. Perché? Dà un errore di …
13 c++ 

1
std :: is_constructible restituisce un valore incoerente per il costruttore privato
Quali sono le regole con cui std::is_constructiblegestisce i costruttori privati? Dato il seguente codice: #include &lt;iostream&gt; class Class { private: Class() { } }; template &lt;typename T&gt; class Test { public: static void test() { std::cout //&lt;&lt; std::is_constructible&lt;Class&gt;::value &lt;&lt; std::is_constructible&lt;T&gt;::value &lt;&lt; std::endl; } }; int main() { Test&lt;Class&gt;::test(); } Questa …
13 c++  typetraits 



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.