abr*_*ert 8 c++ templates std-function c++14
我有以下问题:
template< std::size_t N >
class A
{
std::function< std::size_t( /*std::size_t,....,std::size_t <- N-times*/) > foo;
};
Run Code Online (Sandbox Code Playgroud)
正如您在上面所看到的,我尝试将a声明std::function<...> foo
为类的成员A
.在这里,我希望foo具有返回类型std::size_t
(这没有问题)并且作为输入,我将传递N次类型std::size_t
但我不知道如何.有可能吗?
提前谢谢了.
Gui*_*cot 13
你可以使用std::index_sequence
:
template<std::size_t N, typename = std::make_index_sequence<N>>
struct A;
template<std::size_t N, std::size_t... S>
struct A<N, std::index_sequence<S...>> {
std::function<std::size_t(decltype(S)...)> foo;
};
Run Code Online (Sandbox Code Playgroud)
如果您愿意,还可以定义它扩展的类型:
template<typename T, std::size_t N, typename = std::make_index_sequence<N>>
struct A;
template<typename T, std::size_t N, std::size_t... S>
struct A<T, N, std::index_sequence<S...>> {
template<std::size_t>
using type = T;
std::function<std::size_t(decltype(S)...)> foo;
};
Run Code Online (Sandbox Code Playgroud)