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
Come può una const expr essere valutata così velocemente
Ho provato espressioni const che vengono valutate in fase di compilazione. Ma ho giocato con un esempio che sembra incredibilmente veloce quando eseguito in fase di compilazione. #include<iostream> constexpr long int fib(int n) { return (n <= 1)? n : fib(n-1) + fib(n-2); } int main () { long int …
13 c++  const  constexpr 

6
Come confrontare le strutture generiche in C ++?
Voglio confrontare le strutture in modo generico e ho fatto qualcosa del genere (non posso condividere la fonte reale, quindi chiedere maggiori dettagli se necessario): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } Funziona principalmente …


4
La spiegazione dell'ordinamento rilassato è errata in cppreference?
Nella documentazione di std::memory_ordersu cppreference.com c'è un esempio di ordinamento semplificato : Ordinazione rilassata Le operazioni atomiche contrassegnate memory_order_relaxednon sono operazioni di sincronizzazione; non impongono un ordine tra gli accessi simultanei alla memoria. Garantiscono solo atomicità e coerenza dell'ordine di modifica. Ad esempio, con xey inizialmente zero, // Thread 1: …



1
Possibile bug del compilatore in MSVC
Il codice seguente viene compilato con gcc e clang (e molti altri compilatori C ++ 11) #include <stdint.h> typedef int datatype; template <typename T> struct to_datatype {}; template <> struct to_datatype<int16_t> { static constexpr datatype value = 1; }; template <typename T> class data { public: data(datatype dt = to_datatype<T>::value) …
13 c++  c++11  visual-c++ 


2
Come determinare quali file di intestazione includere?
Supponiamo di avere il codice (molto semplice) di seguito. #include <iostream> int main() { std::cout << std::stoi("12"); } Questo si compila bene su g ++ e clang; tuttavia, non riesce a compilare su MSVC con il seguente errore: errore C2039: 'stoi': non è un membro di 'std' errore C3861: 'stoi': …
13 c++ 


1
Operatore ambiguo in gcc
Ho creato un modello di funzione per stampare alcuni dei contenitori stl #include <iostream> #include <vector> #include <string> template <template <typename, typename> class C, typename T, typename A> std::ostream& operator<<(std::ostream& os, const C<T, A>& container) { for (auto& elem : container) { os << elem << " "; } return …
13 c++  c++17 


1
Perché le variabili locali extern con lo stesso nome in blocchi diversi ottengono collegamenti diversi tra compilatori in c ++?
Mentre stavo solo controllando quali collegamenti sono concessi alle variabili locali esterne, ho scoperto che alcuni comportamenti diversi tra compilatori per esempio se ho testato sotto il codice come vedi nella variabile commenti vars hanno collegamenti diversi // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> …
12 c++  g++  clang++  extern  linkage 

1
`Equality_comparable_with` deve richiedere` common_reference`?
Il concetto ha loequality_­comparable_with<T, U> scopo di dichiarare che gli oggetti di tipo Te Upossono essere confrontati uguali tra loro, e se lo sono, allora questo ha il significato atteso. Va bene. Tuttavia, questo concetto richiede anche common_reference_t<T&, U&>di esistere. L'impulso principale per common_referencee la sua funzionalità relativa sembra essere …


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.