У меня есть следующий упрощенный код. Вопрос в том, есть ли способ распознать параметр A::v_ и значение как тип контейнера и вызвать правильную функцию преобразования? Или надо переделку делать? В случае переделки есть ли у вас предложения, как наиболее эффективно справиться с такой проблемой?
У меня есть следующий упрощенный код. Вопрос в том, есть ли способ распознать параметр A::v_ и значение как тип контейнера и вызвать правильную функцию преобразования? Или надо переделку делать? В случае переделки есть ли у вас предложения, как наиболее эффективно справиться с такой проблемой? [code]template B convert(A a);
template B convert(CA a);
template CB convert(A a);
template CB convert(CA a);
template struct A { T v_;
void assign(const A& value) { // How to recognize if "value" and "this->v_" is an container // and call right "convert" function // if constexpr (???) // v_ = convertv_ container, this->v_ element>(value); // else if constexpr (???) // v_ = convertv_ container, this->v_ element>(value); // else if constexpr (???) // v_ = convertv_ type>(value); // else // v_ = convertv_ type>(value); } };
int main(int argc, const char *argv[]) { A i; A vi;
vi.assign(i); } [/code] Я пытался найти преобразование аргументов шаблона в шаблон-шаблон, но безуспешно.