diese Bedenken Sie:inhärierende Typdeklarationen in einer Hierarchie von Vorlagen
template <typename T>
struct A {
using MyType1 = ...;
using MyType2 = ...;
using MyType3 = ...;
using MyType4 = ...;
using MyType5 = ...;
...
};
template <typename T>
struct B: A<T> {
using MyType1 = typename A<T>::MyType1;
using MyType2 = typename A<T>::MyType2;
using MyType3 = typename A<T>::MyType3;
using MyType4 = typename A<T>::MyType4;
using MyType5 = typename A<T>::MyType5;
...
};
template <typename T>
struct C: A<T> {
using MyType1 = typename A<T>::MyType1;
using MyType2 = typename A<T>::MyType2;
using MyType3 = typename A<T>::MyType3;
using MyType4 = typename A<T>::MyType4;
using MyType5 = typename A<T>::MyType5;
...
};
... // Many more classes in the hierarchy
// with all the type declarations duplicated in each of them.
Gibt es eine Möglichkeit, dies kürzer gemacht werden kann?
Ein verwandter question wurde gefragt, aber machte nicht den Punkt, wie schlecht die Duplizierung war und erhielt keine Antworten.
Verwenden Sie MSVC? Dieser Code sollte sowieso nicht kompiliert werden, da 'A :: MyTypeN' ein abhängiger Typ ist, der' typeName A :: MyType1' sein muss. –
TartanLlama
Fest, danke. Nein, ich benutze 'gcc'. – AlwaysLearning
Keine Ahnung, was Sie tun möchten. Warum nicht einfach 'typename A :: MyType1' oder' typename B :: MyType1', 'typename C :: MyType1' ...? –
songyuanyao