C++14。声明具有相同类型和固定长度参数列表的函数
C++14. Declare a function with same-type-and-fixed-length argument list
有没有一种方法可以使用 C++14 实现某种辅助结构,它以 Number
、return 类型 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 实现某种辅助结构,它以 Number
、return 类型 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, "!" );
}