【发布时间】:2019-06-29 18:28:08
【问题描述】:
我有一个constexpr auto my_tuple = std::make_tuple(a, b, c, d, e);。现在,我想在其每个元素上应用constexpr 函数。我以为我可以这样做:
template <typename... Types>
void constexpr apply_func_on_tuple(std::tuple<Types...> tpl) noexcept
{
for (std::size_t i = 0; i < sizeof...(Types); ++i)
{
my_function(std::get<i>(tpl));
}
}
但它不起作用。在阅读this 后,我明白了为什么我不能这样做。有没有其他方法可以在编译时完成我想要的完全?
【问题讨论】:
-
除了提到 C++20 的
for...声明之外,我不知道任何答案会比那些 in this question 好得多。 -
Boost::Hana::for_each 适用于 std::tuple boost.org/doc/libs/1_61_0/libs/hana/doc/html/… 您需要同时包含 for_each 标头和. boost/Hana/ext/std/tuple.hpp
标签: c++ templates metaprogramming stdtuple