Есть некий класс, условно Container, который хранит в себе разные другие типы, наподобие variant.
Что хотелось бы получить синтаксически:
const Container cont1 = double()
const Container cont2 = int();
const Container cont3 = string();
const Container cont4 = SomeClass();
// и т.д.
const double v1 = cont1;
const int v2 = cont2;
const string v3 = cont3;
const SomeClass v4 = cont4;
// и т.д.
//...
Казалось бы, задачу можно решить определив оператор приведения типа у класс Container, но вышеописанные выражения являются вызовами конструкторов инициализации, а следовательно у классов со сложными конструкторами (типа string) сначала срабатывают перегрузки конструкторов, а не операторов приведения типа. Следовательно нужная схема не работает. Как-нибудь просто можно решить задачу в рамках современного С++ ?