Сообщение Re[6]: initializer_list и неизвестная размерность от 25.11.2020 21:12
Изменено 27.11.2020 11:31 Bill Baklushi
Re[6]: initializer_list и неизвестная размерность
rg45:
R>
Мой вариант https://rsdn.org/forum/cpp/7890246.1
Но сочетание разной глубины int не запрещает.
Меня всё мучают подозрения, что это можно реализовать на шаблонах, но как, ума не приложу.
Для практических целей вполне сойдёт вариант фиксированной глубины без шаблонов
А вотв мировом масштабе без потери общности...
R>
R>template<typename T>
R>struct Tree : std::variant<T, std::initializer_list<Tree<T>>>
R>{
R> using variant = std::variant<T, std::initializer_list<Tree>>;
R> Tree() = default;
R> Tree(const T& t) : variant(t) {}
R> Tree(std::initializer_list<Tree> children) : variant(children) {}
R>};
R>
Мой вариант https://rsdn.org/forum/cpp/7890246.1
Автор: Bill Baklushi
Дата: 25.11.20
запрещает смешивание Tree и int в пределах одного уровняДата: 25.11.20
Tree(std::initializer_list<int> children) : val_(children) {}
Tree(std::initializer_list<Tree> children) : val_(children) {}
Но сочетание разной глубины int не запрещает.
Меня всё мучают подозрения, что это можно реализовать на шаблонах, но как, ума не приложу.
Для практических целей вполне сойдёт вариант фиксированной глубины без шаблонов
std::variant<
std::initializer_list<int>,
std::initializer_list<std::initializer_list<int>>,
std::initializer_list<std::initializer_list<std::initializer_list<int>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>>>
>
А вот
Re[6]: initializer_list и неизвестная размерность
rg45:
R>
Мой вариант https://rsdn.org/forum/cpp/7890246.1
Но сочетание разной глубины int не запрещает.
Меня всё мучают подозрения, что это можно реализовать на шаблонах, но как, ума не приложу.
Для практических целей вполне сойдёт вариант фиксированной глубины без шаблонов
(UPD это, окажывается не работает)
А вотв мировом масштабе без потери общности...
R>
R>template<typename T>
R>struct Tree : std::variant<T, std::initializer_list<Tree<T>>>
R>{
R> using variant = std::variant<T, std::initializer_list<Tree>>;
R> Tree() = default;
R> Tree(const T& t) : variant(t) {}
R> Tree(std::initializer_list<Tree> children) : variant(children) {}
R>};
R>
Мой вариант https://rsdn.org/forum/cpp/7890246.1
Автор: Bill Baklushi
Дата: 25.11.20
запрещает смешивание Tree и int в пределах одного уровняДата: 25.11.20
Tree(std::initializer_list<int> children) : val_(children) {}
Tree(std::initializer_list<Tree> children) : val_(children) {}
Но сочетание разной глубины int не запрещает.
Меня всё мучают подозрения, что это можно реализовать на шаблонах, но как, ума не приложу.
std::variant<
std::initializer_list<int>,
std::initializer_list<std::initializer_list<int>>,
std::initializer_list<std::initializer_list<std::initializer_list<int>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>>,
std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<std::initializer_list<int>>>>>>
>
(UPD это, окажывается не работает)
А вот