相关疑难解决方法(0)

应用一组N个函数的第一个有效函数

此前的答案显示了如何根据呼叫的有效性应用功能:此处.但是,它适用于两个功能.N在C++ 14中,我想知道这个概念是否可以推广到使用智能模板编程技巧的函数.

问题如下:

template <std::size_t N, class... X>
/* [Return type] */ apply_on_validity(X&&... x)
{
    // Tricks here
}

// The function would be equivalent to a hypothetical
// template <std::size_t N, class... F, class... Args>
// [Return type] apply_on_validity(F&&... f, Args&&... args)
// where N = sizeof...(F) is the number of functions
Run Code Online (Sandbox Code Playgroud)

在执行方面:

apply_on_validity<3>(f1, f2, f3, a, b, c, d, e);
Run Code Online (Sandbox Code Playgroud)

将:

  • f1(a, b, c, d, e)如果表达式有效则调用,否则调用
  • f2(a, b, c, d, e)如果表达式有效则调用,否则调用
  • f3(a, …

c++ templates overloading template-meta-programming c++14

7
推荐指数
3
解决办法
378
查看次数

使用临时函数包装器完美转发

请在此处,此处此处C++14的帖子后面考虑以下代码:

// Include
#include <tuple>
#include <iostream>
#include <type_traits>

// Temporary function queue declaration
template <class... F>
class temporary_function_queue;

// Apply function queue declaration
template <class... F>
constexpr temporary_function_queue<F&&...> apply_function_queue(F&&... f);

// Temporary function queue definition
template <class... F>
class temporary_function_queue final
{
    // Types
    private:
    using const_lvalue_reference = const temporary_function_queue&;
    using rvalue_reference = temporary_function_queue&&;
    using temporary_type = temporary_function_queue<F&&...>;
    using data_type = std::tuple<F&&...>;

    // Lifecycle
    private:
    temporary_function_queue(rvalue_reference) = default;
    temporary_function_queue(const_lvalue_reference) = delete;
    temporary_function_queue …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-meta-programming perfect-forwarding c++14

5
推荐指数
1
解决办法
484
查看次数