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.


2
È un vecchio costruttore in stile C ++?
Qui un pezzo di codice C ++. In questo esempio, molti blocchi di codice sembrano chiamate del costruttore. Sfortunatamente, il codice di blocco n. 3 non lo è (puoi verificarlo usando https://godbolt.org/z/q3rsxn e https://cppinsights.io ). Penso che sia una vecchia notazione C ++ e potrebbe spiegare l'introduzione della nuova notazione …
17 c++  c++11 

1
Clang ha ragione a rifiutare il codice in cui la classe nidificata di un modello di classe è definita solo tramite specializzazioni?
Dato il seguente modello di classe: template<typename T> struct Outer { struct Inner; auto f(Inner) -> void; }; definiamo Innerseparatamente per ogni specializzazione di Outer: template<> struct Outer<int>::Inner {}; template<> struct Outer<double>::Inner {}; e quindi definire funa volta la funzione membro per tutte le specializzazioni di Outer: auto Outer<T>::f(Inner) -> …

3
C'è un modo per installare Valgrind su Catalina?
C'è un modo per installare Valgrind su Catalina e farlo funzionare correttamente? In tal caso, apprezzerei molto un processo graduale. Ho provato a installare Valgrind con https://github.com/sowson/valgrind ma quando ho provato helloWorld.cppsul terminale, la console ha restituito errori che non avrei dovuto ottenere. Non sono sicuro se ho commesso un …


2
Modelli di sovraccarico ambigui
Ho il seguente codice di modello #include <vector> #include <array> #include <iostream> template<typename T1> void foo(std::vector<T1> bar) { std::cout << "GENERIC" << std::endl; } template<typename T1> void foo(std::vector<std::vector<T1>> bar) { std::cout << "SPECIFIC (vector)" << std::endl; } template<typename T1, int SIZE> void foo(std::vector<std::array<T1, SIZE>> bar) { std::cout << "SPECIFIC (array)" …
16 c++  templates 



1
std :: pair <auto, auto> tipo di ritorno
Stavo giocando con autodentro std::pair. Nel codice seguente, la funzione fdovrebbe restituire un std::pairtipo che dipende da un parametro template. Un esempio funzionante: ESEMPIO 1 template &lt;unsigned S&gt; auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return …

2
Std :: set memorizza gli oggetti contigui nella memoria?
Fa std::setoggetti archivio in memoria contigua come std::vector? Non sono stato in grado di trovarlo sul Web, cppreference non menziona i dettagli sull'allocazione della memoria. Ma non riesco a capire perché non possa usare la memoria contigua, quindi la mia domanda.
16 c++  set  stdset 

1
Sizeof (enum) può differire da sizeof (std :: Sottostante_tipo <Enum> :: tipo)?
Recentemente è venuto fuori in una revisione del codice che nel seguente esempio: enum class A : uint8_t { VAL1, VAL2 }; ... std::vector&lt;A&gt; vOfA; // Assume this is sized and full of some stuff. std::memcpy(wire_buffer, vOfA.data(), vOfA.size() * sizeof(A)); Dovremmo usare sizeof(std::underlying_type&lt;A&gt;::type)invece di sizeof(A). È possibile che questi possano …

3
Modelli variabili: spiega argomenti in gruppi
Ho una funzione che accetta due argomenti: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } E una variadica che dovrebbe inoltrare i suoi argomenti in coppia: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % …



3
Perché il distruttore non chiamato nell'operatore viene eliminato?
Ho provato a convocare ::deleteuna lezione in operator deleteesso. Ma il distruttore non viene chiamato. Ho definito una classe il MyClasscui operator deletesovraccarico è stato. Anche il globale operator deleteè sovraccarico. Il sovraccarico operator deletedi MyClasschiamerà il sovraccarico globale operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } …

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.