Wenn habe folgendes ProblemTemplat-Alias für Elementfunktionen mit unterschiedlichen Rückgabetypen
class a;
class b;
class c;
class db {
...
const std::set<a*>& get_all_a();
const std::vector<b*>& get_all_b();
const custom_c_container& obtain_all_the_cs();
...
}
ich eine lange Funktion habe, die ähnlich etwas tun muß (ich eine Vorlage schreiben kann, die den Typen a nimmt, b oder c, dafür) für jeden dieser 3 Datensätze und hat eine Instanz von db. Das einzige Problem ist der Datenzugriff. Ich möchte, dass lösen, indem sie etwas in der Art des Schreibens:
template<class data_type>
auto get_data();
template<>
std::result_of<decltype(&db::get_all_a)(db)>::type get_data<a>
= std::mem_fn(&db::get_all_a);
Es gibt wahrscheinlich mehrere Gründe dies nicht, aber ich hoffe, es zeigt, was ich versuche zu erreichen.
Wie vorgeschlagen I werde ein gewünschtes Verwendungsbeispiel hinzuzufügen:
template<class data_type>
void process(db& my_db) {
for(auto& item : get_data<data_type>(my_db) {
//... some processing ...
}
}
...
void process_all() {
db my_db = get_db();
process<a>(my_db);
process<b>(my_db);
process<c>(my_db);
}
Unklar. Zeigen Sie ein echtes Minimalbeispiel, zeigen Sie die gewünschte Syntax an. –