Klausimai pažymėti „šablonų išskaičiavimu“

Šablono argumento išvestis yra kompiliatoriaus bandymas išleisti šablono argumentus, kai kai kurie iš jų yra praleisti.
2
atsakymai

Kas yra šablonų atimties vadovai ir kada juos naudoti?

Standartinė C ++ 17 pristato „šablonų atėmimo gaires“. Suprantu, kad jie yra kažkaip susiję su naujo modelio, pateikto šiame standarto variante, argumentų, susijusių su konstruktoriais, išrašymu, tačiau dar nematau paprasto, dažnai užduodamo klausimo apie ...
nustatyti 03 gruodis '16, 22:35
4
atsakymai

Jei norite, kad funkcija priimtų pasirinkimo funkciją?

Aš stengiuosi parašyti monado stiliaus sintaksės cukrų, ant std :: neprivalomo. Atkreipkite dėmesį: šablonas <class T> void f (std :: neprivalomas <T>) {} Kadangi ši funkcija negali būti vadinama pasirinktiniu T 1 (pvz., Int), nors ...
nustatyti 21 rug. '18, 11:56
1
atsakymas

kad dalinio užsakymo procedūra išvesties šablone

Aš perskaičiau apie standartą C ++ 11, bet negaliu suprasti, kaip svarbu toliau. Pavyzdys yra labai svarbus. Daliniam užsakymui nustatyti naudojami du tipų rinkiniai. Kiekvienam naudojamam šablonui yra originalus funkcijų tipas ir konvertuotas t ...
birželio 09 d. 13 val
1
atsakymas

Kaip kompiliatorius gali priskirti šį klasės šabloną į priekinę nuorodą?

Apsvarstysiu šablono šablono išvestį, pateikiamą C ++ 17. Čia yra kodas, kurį norėčiau nurodyti: #include <iostream> #include <cmath> naudojant std :: endl; naudojant std :: cout;
balandžio 3 d. '18, 19:43
2
atsakymai

Kodėl šis kvietimas nėra dviprasmiškas modelis?

Pareiškiu du šablonus, pirmasis konvertuoja argumentą x iš T tipo į tipą U ir antrą iš U tipo į T tipą Jei skambinau su 10, kompiliatorius nesiskundžia. Manau, abu atitinka reikalavimus, kuriuos reikia naudoti, ir todėl jie turėtų būti dviprasmiški.
nustatyti 02 sp '18 - 16:51
3
atsakymai

Ar šablono išvesties vedlys gali skambinti į constexpr funkcijas?

Turiu savo fiksuoto dydžio masyvo tipą, kurį norėčiau, kad constexpr galėtų būti constexpr iš std :: initializer_list, nereikia aiškiai nurodyti dydžio šablono argumento. Maniau, kad galėčiau naudoti vadovą ...
nustatytas sausio 7 d '19, 1:53
1
atsakymas
4
atsakymai

Netiesioginės konversijos su kintamais modeliais

Apsvarstykite du funkcijų skambučius foo ({"a", 1}, {"b", "reikšmė"}); foo ({"a", 1}, {"b", "reikšmė"}, {"c", 1.0})); Ar yra būdas parašyti funkciją „foo“ savavališkam argumentų porų skaičiui? Aš galvojau apie kažką šablono eilutėse <typename ... Args> ...
nustatyti 09 gruodis '16, 23:58
2
atsakymai

Kodėl išvestis nėra vykdoma std :: set į gcc?

Turiu std :: set, leidžiančią išeiti iš iteratoriaus ribų. #include <iostream> #include <set> int main () {std :: set s1 = {1,2,3,4}; std :: set s2 (s1.begin (), s1.end ()); } Pirmiau pateikta programa nepavyko surinkti ...
lapkričio 6 d. '17, 15:53
4
atsakymai

Kodėl standartiniuose C ++ 17 argumentuose nebuvo privačių klasių argumentų?

Viena iš vietų, kuriose tikėjausi, kad galėsiu naudoti naują šablono argumento išvestį, buvo sukurti std :: set / std :: map / bet kuriuos kitus konteinerius su pasirinktiniais palyginimais - mano tikslas yra sukurti vieną eilutę, kuri sukuria ...
gegužės 28 d., 18 val
1
atsakymas

Kodėl kompiliatorius negali naudoti šablono parametro, kai jis naudojamas su konversijos operatoriumi?

Apsvarstykite šį kodą: #include <utility> šablonas <typename T> struktūros pakuotė {T vertė; }; struct foo {operatoriaus pakuotė <int> () {return {10}; }}; int main () {foo f; įvynioklis w = f; // klaida ...
nustatytas birželio 18 d. 17 val
1
atsakymas

Šablono argumentų išvesties parametrų tipo funkcijai rodymas naudojant nepasirinktų parametrų paketą

Tai panaši į klausimą, bet konkretesnį atvejį. Šį kartą kompiliatorius neveikia. šablonas <class T> struct nondeduced {naudojant tipą = T; }; šablonas <klasė T> naudojant nondeduced_t = typename nondeduced <T> :: type; temp ...
nustatytas rugpjūčio 23 d '16, 18:05
2
atsakymai

Kodėl atskaitymo kandidatas reikalingas kaip atskiras atskaitos vadovas?

šablonas <typename T> struct A {A (T); }; int main () {A x (42); // # 1 A y = x; // # 2} Kiek aš suprantu, T už # 1 bus rodomas naudojant numanomą išvesties vadovą, generuojamą iš pirmojo ...
gegužės 11 d., 18 val
2
atsakymai

Ar konstruktoriaus modelis gali sukelti dviprasmiškumą C ++ 17 parametre klasės šablono parametrams

Apsvarstykite paprastą pavyzdį: šabloną <klasė T> struct foo {template <template <class> klasės TT> foo (TT <T> {} foo (foo <T> {} foo () {}}; int main () {foo f1 (foo <int> {}) ...
nustatyti 05 Rgs '17, 14:46
2
atsakymai

SFINAE ir adresas perkrovos funkcija

Aš bandau išspręsti perkrovos funkcijos adresą (bar) kitos funkcijos (foo1 / foo2) kontekste. struct Baz {}; int bar () {return 0; } plaukimo juosta (int) {return 0.0f; } void bar (Baz *) {} void foo1 (void ( (Baz *)) {} temp ...
lapkričio 10 d. '15, 10:33