如果你做不到,那不是 C++。
在你下地狱之前,也许你会想一想你为什么需要这个结构。也许在介绍这样一个怪物之前告诉我们你想要实现什么。我很确定这段代码无法通过代码审查。
#include <iostream>
#include <array>
#include <variant>
int main() {
std::array<
std::variant<
int,
std::array<int, 2>,
std::array<
std::variant<
int,
std::array<
std::variant <
int,
std::array<int, 3>
>
,4>
>
,2>
>
,3>
holy
{2,
std::array<int,2>{3, 4},
std::array<
std::variant<
int,
std::array<
std::variant <
int,
std::array<int, 3>
>
,4>
>
,2>
{5,
std::array<
std::variant <
int,
std::array<int, 3>
>
,4>
{6, 76, 5, std::array<int, 3>{3, 4, 6}}
}
};
std::cout << std::get<0>(holy[0]); // 2
std::cout << std::get<1>(holy[1])[0]; // 3
std::cout << std::get<1>(holy[1])[1]; // 4
std::cout << std::get<0>(std::get<0>(std::get<2>(holy[2]))); // 5
}
Try it on Godbolt和
How it looks with 1 statement per line