Domande taggate «templates»

Il tag dei modelli viene utilizzato in più contesti: programmazione generica (in particolare C ++) e generazione di dati / documenti mediante motori di modelli. Quando si utilizza questo tag per domande pesanti sull'implementazione, taggare il linguaggio del codice in cui è scritta l'implementazione.

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<class T, class R, class... Args> R call_or_throw(const std::weak_ptr<T>& ptr, const std::string& 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 



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 …


1
Definizione fuori classe C ++ 20 in una classe modello
Fino allo standard C ++ 20 di C ++, quando volevamo definire un operatore fuori classe che utilizza alcuni membri privati ​​di una classe template, useremmo un costrutto simile a questo: template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class …
12 c++  templates  c++20 

2
Passare un concetto a una funzione
Poiché i concetti sono definiti come predicati in fase di compilazione, è anche possibile riutilizzare effettivamente questi predicati per algoritmi in fase di compilazione? Ad esempio, sarebbe possibile verificare se tutti i tipi in una tupla sono conformi a un concetto? Per quanto ho visto, non è possibile in alcun …


1
È possibile passare un modello variabile come argomento del modello modello?
Il seguente esempio senza senso non viene compilato, ma esiste un altro modo per passare un modello variabile come argomento del modello modello? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); …

2
Deduzione dei tipi di argomenti del modello di modello C ++
Ho un codice che trova e stampa le corrispondenze di uno schema mentre passa sopra il contenitore di stringhe. La stampa viene eseguita nella funzione foo che è modellata Il codice #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> …

1
Problema in GCC / C ++ 17 con classe modello di modello
Considera i 2 sovraccarichi seguenti template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Il primo funziona per le classi regolari, mentre il secondo per i modelli non istanziati. Per esempio: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields 0 Ora …
10 c++  templates  gcc  clang  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 …



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.