问题描述
如何迭代具有 std::array
值类型的 std::any
。假设我们不使用 std::tuple
和 std::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 (将#修改为@)