Код: Выделить всё
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);
}
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-template