相关疑难解决方法(0)

将NON-POD类型传递给Variadic函数是不确定的行为?

在这份文件中,作者说

只有POD类型可以作为省略号"..."的参数,而std :: string不是POD类型.

我理解为这个Passing NON-POD type to Variadic function is undefined behavior.这样对吗?
虽然,他是说C/C++标准吗?我试图在n3242 C++规范中找到它.但找不到.

我想知道我的理解是正确的,这是一个标准.

c c++ standards pod variadic-functions

13
推荐指数
1
解决办法
2084
查看次数

我可以在这里避免模板递归吗?

我写了一个for_eachtupleS:

template <typename Tuple, typename F, size_t begin, size_t end>
enable_if_t<begin == end || tuple_size<Tuple>::value < end> for_each(Tuple&, F&&) {
}

template <typename Tuple, typename F, size_t begin = 0U, size_t end = tuple_size<Tuple>::value>
enable_if_t<begin < end && tuple_size<Tuple>::value >= end> for_each(Tuple& t, F&& f) {
    f(get<begin>(t));
    for_each<Tuple, F, begin + 1, end>(t, forward<F>(f));
}
Run Code Online (Sandbox Code Playgroud)

[ 实例 ]

但是Yakk对这个问题的回答给出了一个很好的例子,说明如何处理非递归地在所有tuple值上运行lambda :

namespace detail {
    template<class F, class...Args>
    void for_each_arg(F&& f, Args&&...args) …
Run Code Online (Sandbox Code Playgroud)

c++ recursion tuples metaprogramming range

4
推荐指数
1
解决办法
435
查看次数