Я хотел бы, чтобы класс имел функцию с аргументом шаблона, и на основе этого аргумента шаблона обрабатывается конкретная переменная-член.Может ли шаблонная функция C++ выбрать переменную-член?
Например, если шаблон функции специализация была разрешена, то что-то вроде этого:
struct A
{
struct M1 {};
struct M2 {};
// Function template specialization not allowed :(
template<typename M>
void addM(M const &m);
template<>
void addM(M1 const &m)
{
m1_vec_.push_back(m);
}
template<>
void addM(M2 const &m)
{
m2_vec_.push_back(m);
}
std::vector<M1> m1_vec_;
std::vector<M2> m2_vec_;
};
Любых идей? Я чувствую, что я пропустил что-то простое, но не могу на это положиться.
Почему не были перегруженные функции, взять 'M1' и' M2'? –
C++ позволяет легко пропустить дерево с деревьев. ;-) – 5gon12eder
На боковой ноте функциональные шаблоны ** могут ** быть специализированными (полностью). Причина, по которой этот код выходит из строя, заключается в том, что они не могут быть специализированы в пределах класса. – SergeyA