在C++中,函数调用的参数表达式的求值顺序是未指定的。当我使用std::apply时,是否有保证函数按照元组的元素顺序被调用?我有一个需要按照顺序先对元组的第一个元素应用函数,然后是第二个,第三个......的情况。
作为反例:
作为反例:
template <class Tuple, size_t... Is>
void function(Tuple t, std::index_sequence<Is...>) {
some_func( my_func(get<Is>(t))... );
}
不保证my_func在元组的每个元素上被调用的顺序。
std::apply(f, std::make_tuple(1, 2))
调用f(1)
和f(2)
,而不是f(1, 2)
。 - user2357112my_func
的所有输入类型,返回类型是否相同? - Ben Voigt