Информация об изменениях

Сообщение Оператор приведения от 04.07.2019 10:30

Изменено 04.07.2019 10:31 Videoman

Оператор приведения
Есть некий класс, условно 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) сначала срабатывают перегрузки конструкторов, а не операторов приведения типа. Следовательно нужна схема не работает. Как-нибудь просто можно решить задачу в рамках современного С++ ?
Оператор приведения
Есть некий класс, условно 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) сначала срабатывают перегрузки конструкторов, а не операторов приведения типа. Следовательно нужная схема не работает. Как-нибудь просто можно решить задачу в рамках современного С++ ?