Dies ist eher eine Kuriosität mit C++ - Vorlagen als etwas Nützliches. Es sollte eine Klasse mit einer variablen Anzahl von Mitgliedern sein. Ist es wahrscheinlich, dass dies zum direkten Mitgliederzugriff kompiliert wird?Template-Klasse mit variabler Anzahl von Mitgliedern in C++
// type equality
template <typename X, typename Y> struct Eq { static const bool out = false; };
template <typename X> struct Eq<X, X> { static const bool out = true; };
template <typename First, typename... Rest>
class Table {
First _field;
Table<Rest...> _nextTable;
public:
template <typename T>
T &get() {
if (Eq<First, T>::out)
return (T&)_field;
return (T&)_nextTable.get<T>();
}
};
template<typename First>
class Table<First> {
First _field;
public:
template <typename T>
T &get() {
return _field;
}
};
int main() {
Table<int, double> table;
table.get<double>() = 11.1;
}
Sie können nicht nur die Montage überprüfen? Google godbolt Compiler Explorer, und lochen den Code dort hinein. –
Es sieht für mich so aus, als ob Sie ['std :: tuple'] grundsätzlich neu implementieren (http://en.cppreference.com/w/cpp/utility/tuple). –
Mit Optimierungen am wahrscheinlichsten ja. – Arunmu