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
Deduzione non corrispondente dei tipi automatici tra diversi compilatori c ++
Quindi, sto cercando di implementare il prodotto dot ( https://en.wikipedia.org/wiki/Dot_product ) in un certo stile del moderno C ++ e ho trovato il seguente codice: #include <iostream> template<class... Args> auto dot(Args... args) { auto a = [args...](Args...) { return [=](auto... brgs) { static_assert(sizeof...(args) == sizeof...(brgs)); auto v1 = {args...}, i1 …

2
Il mio compilatore ha ignorato il mio membro di classe thread_local statico inutilizzato?
Voglio fare una registrazione di thread nella mia classe, quindi decido di aggiungere un controllo per la thread_localfunzione: #include <iostream> #include <thread> class Foo { public: Foo() { std::cout << "Foo()" << std::endl; } ~Foo() { std::cout << "~Foo()" << std::endl; } }; class Bar { public: Bar() { std::cout …

1
Le espressioni richieste sono autorizzate a "catturare" le variabili dell'ambito allegato?
Nel seguente esempio, gli argomenti della funzione vengono utilizzati per verificare con un'espressione obbligatoria se un'espressione che li utilizza è ben formata. L'espressione richiede non accetta argomenti; utilizza direttamente le variabili nell'ambito della funzione: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr (requires …

2
Come eludere la copia durante il concatenamento?
Sto creando una classe di tipo concatenamento, come il piccolo esempio di seguito. Sembra che quando si concatenano funzioni membro, viene invocato il costruttore di copie. C'è un modo per sbarazzarsi della chiamata del costruttore della copia? Nel mio esempio di giocattolo qui sotto, è ovvio che ho a che …
10 c++  c++14  c++17 

3
Perché non è necessario utilizzare typename per tipi dipendenti nel seguente caso?
Ho letto sulla rimozione del riferimento di un tipo, qui . Dà il seguente esempio: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int …

5
Collegamento dinamico - Linux vs. finestre
In Windows, quando compilo il codice C / C ++ in un progetto DLL in MSVC, ottengo 2 file: MyDll.dll MyDll.lib dove per quanto ho capito MyDll.libcontiene una sorta di tabella di puntatori che indica le posizioni delle funzioni nella dll. Quando si usa questa dll, diciamo in un file …




1
SFINAE utilizzando VoidT con compilatori diversi porta a risultati diversi
Considera il seguente codice: template <typename T> using VoidT = void; class A { public: using TEST = int; }; class C { public: using DIFFERENT = int; }; template <typename T, typename Enable = void> class B { public: B() = delete; }; template <typename T> class B<T, VoidT<typename …
10 c++ 



2
Sintassi valida della chiamata dello pseudo-distruttore per una costante mobile
Considera il seguente programma dimostrativo. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Questo programma è compilato da Microsoft Visual Studio Community 2019. Ma clanged gccemettere un errore come questo prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ Se scrivere l'espressione come …

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.