C++14。声明一个具有相同类型和固定长度参数列表的函数

标签 c++ templates c++14 variadic-templates template-meta-programming

有没有一种可能的方法来使用 C++14 来实现某种辅助结构,它将 Number 作为模板参数, 返回类型 Ret和输入类型 T并且将包含成员类型 std::function<Ret(T...)>哪里sizeof...(T) == Number ?

最佳答案

我想下面的 C++14 代码可以告诉你一个方法

#include <utility>
#include <functional>
#include <type_traits>

template <typename T, std::size_t>
using use_type = T;

template <typename...>
struct bar;

template <typename Ret, typename T, std::size_t ... Is>
struct bar<Ret, T, std::index_sequence<Is...>>
 { std::function<Ret(use_type<T, Is>...)> func; };

template <std::size_t N, typename Ret, typename T>
struct foo : public bar<Ret, T, std::make_index_sequence<N>>
 { };

int main ()
 {
   using T1 = std::function<void(int, int, int)>;
   using T2 = decltype(foo<3u, void, int>::func);

   static_assert( std::is_same<T1, T2>::value, "!" );
 }

关于C++14。声明一个具有相同类型和固定长度参数列表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66637498/

相关文章:

c++ - 如何检查模板参数是否为结构/类?

c++ - 我如何洗牌给定大小的数组并将其与 C++ 中另一个相同大小的数组进行比较

C++14 将元组三乘三展开

c++ - 从函数指针静态推断标准 C++98 中的函数类型参数

c++ - 使用 GStreamer 和 multiudpsink 设置不同的 RTP SSRC

c++ - 技巧 : filling array values using macros (code generation)

c++ - 查找间隔之间的素数总和(C++ 程序不适用于大数)

C++ 预处理器不知道模板参数?

c++ - 为什么 decltype(auto) 在这里返回一个引用?

c++ - 使用 C++ 项目将数据保存在磁盘上