Ho una serie di tipi di relazione con una relazione uno-a-uno, per esempio:Mappa due tipi in fase di compilazione
TypeA ---> Type1
TypeB ---> Type2
TypeC ---> Type3
So che queste relazione al momento della compilazione.
Poi, ho una classe template che dipende da questi due tipi:
template<class T1,class T2>
class MyClass
{
T1 foo;
T2 bar;
};
Ora, l'utente della mia biblioteca sarà digitare qualcosa di simile:
MyClass<TypeA,Type1> x;
Questo è scomodo perché non c'è una dipendenza tra i due tipi e dovrebbe essere sufficiente per l'utente specificare solo il primo tipo.
Inoltre, la miscelazione dei due tipi non dovrebbe essere possibile:
MyClass<TypeA,Type2> y; //it should not compile
Io non sono molto familiare con modello di programmazione meta, ho avuto l'impressione che questo è compito fattibile, ma potrei sbagliarmi.
Il numero di tipi coinvolti è elevato, tuttavia sono felice di eseguire uno script per generare il codice, se necessario.
Sai se è possibile o sto perdendo tempo? Hai qualche idea per indicarmi la giusta direzione?
made alcune correzioni. Vedi se è corretto. (Inoltre, hai davvero bisogno di un nome così lungo? TypeLetter2TypeDigit?? IMHO qualcosa come 'TypeMap' è sufficiente.) – iammilind
@iammilind. Grazie. Il nome lungo è necessario per mostrare ciò che voglio. Tu o OP puoi usare qualsiasi nome. –