Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.c++ > #4681

Re: emulare le restrizioni "WHERE" nei template (QTCreator)

From enoquick <enoquick@gmail.com>
Newsgroups it.comp.lang.c++
Subject Re: emulare le restrizioni "WHERE" nei template (QTCreator)
Date 2019-01-28 09:06 -0600
Organization A noiseless patient Spider
Message-ID <q2n5qa$b97$1@dont-email.me> (permalink)
References <q2jui3$rko$1@dont-email.me> <q2kd8v$gqb$1@dont-email.me> <q2musa$t9q$1@dont-email.me>

Show all headers | View raw


Il 28/01/19 07:08, Soviet_Mario ha scritto:
> On 27/01/19 14:55, enoquick wrote:
>> Il 27/01/19 03:44, Soviet_Mario ha scritto:
>>>
>>> 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
>>>
>>>
>>
>> Ti do solo una dritta non l'esempio,almeno per ora.
>> Cerca enable_if con un motore di ricerca
>> In c++20 le cose dovrebbero cambiare ancora,semplificando le 
>> restrizione sui tipi dei template
> 
> si l'ho trovato su cppreference ... ma non riesco bene a capirne l'uso.
> 
> Tra l'altro non so esattamente sino a che standard supporta il 
> compilatore più nuovo che ho installato qui (credo sia GCC-6 a 64 bit, 
> che è la 6.3.0-18) ... debian non è particolarmente solerte 
> nell'incorporare aggiornamenti.
> 
> cmq boh, non mi ci raccapezzo coi pochi esempi trovati di anable_if. O 
> sono troppo complessi o trovo solo la teoria :(
> 
> mi fa piacere che si stia facendo avanti questa esigenza, che è un po' 
> la quintessenza del type-checking applicato anche ai parametri definiti 
> "altrove" rispetto al punto di dichiarazione.
> 
> 
> 
>>
> 
> 


Io trovo l'uso di enable_if per limitare i tipi di un template un 
qualcosa di barbaro
Il mio consiglio e' di non usarlo per un normale programma (si perde 
solo tempo)
Potrebbe avere senso per una libreria
Per fortuna,come avevo gia scritto,sembra che  in c++20 per questo le 
cose cambieranno in meglio attraverso i concepts

Back to it.comp.lang.c++ | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

emulare le restrizioni "WHERE" nei template (QTCreator) Soviet_Mario <SovietMario@CCCP.MIR> - 2019-01-27 10:44 +0100
  Re: emulare le restrizioni "WHERE" nei template (QTCreator) enoquick <enoquick@gmail.com> - 2019-01-27 07:55 -0600
    Re: emulare le restrizioni "WHERE" nei template (QTCreator) Soviet_Mario <SovietMario@CCCP.MIR> - 2019-01-28 14:08 +0100
      Re: emulare le restrizioni "WHERE" nei template (QTCreator) enoquick <enoquick@gmail.com> - 2019-01-28 09:06 -0600
        Re: emulare le restrizioni "WHERE" nei template (QTCreator) Soviet_Mario <SovietMario@CCCP.MIR> - 2019-01-28 19:39 +0100
          Re: emulare le restrizioni "WHERE" nei template (QTCreator) enoquick <enoquick@gmail.com> - 2019-01-29 14:31 -0600

csiph-web