Soviet_Mario
2019-01-27 09:44:34 UTC
salve, sto usando QTCreator su Debian (btw : spaziale
l'ide!), vorrei che qualcuno provasse a spiegarmi come
implementare RESTRIZIONI di tipo nell'uso dei template
premetto che ho letto alcuni tutorials e risposte che
menzionano roba recente tipo "enable_if" "is_integral" (cito
senza controllare) ma non erano esempi abbastanza semplici e
non li ho capiti.
Ci sono due scenari distinti che vorrei poter gestire
1) restrizioni basate su regole/caratteristiche (non su
interfacce come VStudio ma il concetto è quello : ad es. mi
lasciava usare restrizioni tipo IComparable e IConvertible,
con la clausola WHERE aggiunta al template, che significava
concettualmente : limita i tipi istanziabili a quelli che
implementano nativamente o reimplementano una certa interfaccia)
2) aggiungere restrizioni tipo : permetti di istanziare solo
per determinate classi menzionate in una lista
Per questo secondo modo stavo per conto mio pensando a una
inelegante e goffissima soluzione basata su "union", nel
senso che non delego il compilatore alla fase di
specializzazione, ma includo nel template stessa un
container "union" con tutti i tipi passati.
ovviamente non è una soluzione.
Se qualcuno fosse gentile da farmi un esempio almeno del
primo tipo davvero minimale, di template che può venire
creato se un suo "ennesimo" parametro typename è soltanto di
tipo INTEGRAL (oppure meglio ancora NUMERIC) nativo e nessun
altro tipo ....
grazie, scusate (so che il tema è stato dibattuto un po'
ovunque ... ma non riesco a digerire le risposte purtroppo).
Oltretutto il mio C++ è datato e sto cercando solo da poco
di portarlo a pari e mi sono accorto che in 15 anni è
cambiato veramente molto
l'ide!), vorrei che qualcuno provasse a spiegarmi come
implementare RESTRIZIONI di tipo nell'uso dei template
premetto che ho letto alcuni tutorials e risposte che
menzionano roba recente tipo "enable_if" "is_integral" (cito
senza controllare) ma non erano esempi abbastanza semplici e
non li ho capiti.
Ci sono due scenari distinti che vorrei poter gestire
1) restrizioni basate su regole/caratteristiche (non su
interfacce come VStudio ma il concetto è quello : ad es. mi
lasciava usare restrizioni tipo IComparable e IConvertible,
con la clausola WHERE aggiunta al template, che significava
concettualmente : limita i tipi istanziabili a quelli che
implementano nativamente o reimplementano una certa interfaccia)
2) aggiungere restrizioni tipo : permetti di istanziare solo
per determinate classi menzionate in una lista
Per questo secondo modo stavo per conto mio pensando a una
inelegante e goffissima soluzione basata su "union", nel
senso che non delego il compilatore alla fase di
specializzazione, ma includo nel template stessa un
container "union" con tutti i tipi passati.
ovviamente non è una soluzione.
Se qualcuno fosse gentile da farmi un esempio almeno del
primo tipo davvero minimale, di template che può venire
creato se un suo "ennesimo" parametro typename è soltanto di
tipo INTEGRAL (oppure meglio ancora NUMERIC) nativo e nessun
altro tipo ....
grazie, scusate (so che il tema è stato dibattuto un po'
ovunque ... ma non riesco a digerire le risposte purtroppo).
Oltretutto il mio C++ è datato e sto cercando solo da poco
di portarlo a pari e mi sono accorto che in 15 anni è
cambiato veramente molto
--
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)
1) Resistere, resistere, resistere.
2) Se tutti pagano le tasse, le tasse le pagano tutti
Soviet_Mario - (aka Gatto_Vizzato)