c++ - C++14。声明一个具有相同类型和固定长度参数列表的函数
问题描述
有没有一种可能的方法来使用 C++14 实现某种帮助器结构,它将作为模板参数 a Number
、返回类型Ret
和输入类型T
,并且将包含成员类型std::function<Ret(T...)>
where 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, "!" );
}
推荐阅读
- asp.net-core - ASP.NET Core Identity 向后兼容设置
- linux - kubelet 如何将 SIGTERM 信号通知给 kubernetes 节点?
- python - 如何在 for 循环中附加一组 numpy 数组?
- progressive-web-apps - PWA:防止 url 在 PWA 中打开
- python - 如何在熊猫中自动旋转数据
- rust - 如何在 rust 中定义可以包含任何原始数据类型的数组或向量?
- python - DM提到了不和谐的用户
- r - 在 group_by 子句中创建具有列名的函数
- python - 为什么我观察到求和的直接(手动)与循环评估之间的差异?
- reactjs - 用打字稿反应情节js