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
Perché remove_reference non funziona con le funzioni?
Mi sono imbattuto in qualcosa di strano quando ho fatto un modello di metaprogrammazione l'altro giorno. Fondamentalmente si riduce a questa affermazione non (come mi aspetterei) che passi. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); All'inizio pensavo di commettere un errore sintattico nel definire un riferimento di funzione, ma questa affermazione passa, dimostrando che non …
38 c++  templates  types  c++17 

4
Meta programmazione dei template
Qualcuno può spiegarmi, perché il primo modo di meta-programmazione del modello sta andando a ciclo infinito, ma il secondo funziona correttamente. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static …



4
Sovraccarico di una funzione mediante modelli
Sto provando a definire una funzione usando i template e voglio che il typename sia int o anEnum (un enum specifico che avevo definito). Ho provato quanto segue ma ho fallito: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} …


2
È legale assegnare di nuovo un puntatore alla funzione?
I puntatori alle funzioni non sono semplici puntatori di dati in quanto non possono essere memorizzati in un puntatore void *. Tuttavia, sembra che sia possibile memorizzare la copia di un puntatore a funzione nella memoria dinamica (in gcc e clang) come nel codice seguente. Un tale codice è legale …
33 c++ 


3
Decltype e parentesi C ++ - perché?
L'argomento è stato discusso in precedenza , ma questo non è un duplicato. Quando qualcuno chiede la differenza tra decltype(a)e decltype((a)), la solita risposta è - aè una variabile, (a)è un'espressione. Trovo questa risposta insoddisfacente. Innanzitutto, aè anche un'espressione. Le opzioni per un'espressione primaria includono, tra le altre cose: (espressione) …

4
Perché due clausole using si risolvono nello stesso tipo visto come ambiguo in gcc
Ho due classi base con l'utilizzo di clausole class MultiCmdQueueCallback { using NetworkPacket = Networking::NetworkPacket; .... } class PlcMsgFactoryImplCallback { using NetworkPacket = Networking::NetworkPacket; .... } Dichiaro quindi una classe class PlcNetwork : public RouterCallback, public PlcMsgFactoryImplCallback, public MultiCmdQueueCallback { private: void sendNetworkPacket(const NetworkPacket &pdu); } il compilatore quindi contrassegna …

2
Strano comportamento con i campi di classe quando si aggiunge a uno std :: vector
Ho trovato un comportamento molto strano (su clang e GCC) nella seguente situazione. Ho un vettore, nodescon un elemento, un'istanza di classe Node. Quindi chiamo una funzione nodes[0]che aggiunge una nuova Nodeal vettore. Quando viene aggiunto il nuovo nodo, i campi dell'oggetto chiamante vengono resettati! Tuttavia, sembrano tornare alla normalità …

6
È possibile che un #include mancante rompa il programma in fase di esecuzione?
Esiste un caso in cui mancare a #includeromperebbe il software in fase di esecuzione, mentre la compilazione continua? In altre parole, è possibile che #include "some/code.h" complexLogic(); cleverAlgorithms(); e complexLogic(); cleverAlgorithms(); costruiranno entrambi con successo, ma si comporteranno diversamente?
31 c++ 

4
Come si chiama il (...) in C e C ++?
Uno degli usi di ...è denotare entità variadiche in C e C ++. Come si chiama? È classificato come operatore o qualcos'altro se usato in quel modo? Qualche altro dettaglio in merito ...? Modifica: conosco lo scopo di .... Sto chiedendo il suo nome e la classificazione, che spero, sia …

6
È sicuro scambiare due diversi vettori in C ++, usando il metodo std :: vector :: swap?
Supponi di avere il seguente codice: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Immagina che il vettore non lo sia std::string, eppure le classi: …
30 c++  c++11  vector  stdvector  swap 


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.