如何使用`std::any`值类型迭代`std::array`?

问题描述

如何迭代具有 std::array 值类型的 std::any。假设我们不使用 std::tuplestd::get,而只使用 std::array<std::any,SIZE>

我已经声明:

std::array<std::any,5> array_any = {
        "Hello",50,3.1415926535897l,true,nullptr
};

我可以不用循环就这样打印:

std::cout
<< std::boolalpha
<< std::any_cast<const char*>(array_any[0]) << ' '
<< std::any_cast<int>(array_any[1]) << ' '
<< std::any_cast<long double>(array_any[2]) << ' '
<< std::any_cast<bool>(array_any[3]) << ' '
<< std::any_cast<std::nullptr_t>(array_any[4]) << '\n'
<< std::noboolalpha; 

输出

Hello 50 3.14159 true nullptr

这个怎么样?

for (const auto& elem : array_any) {
    std::cout << std::any_cast</* placeholder only */>(elem) << ' ';
}

如何在没有 std::tuple 帮助的情况下实现与第一个完全相同的打印,但可以使用其他一些词汇类型,例如 std::variant 以及泛型编程的强大功能?可能吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)