c – hana :: tuple to auto \u0026\u0026 … args

有没有办法使用类似的东西:

constexpr auto foo = hana::make_tuple(hana::type_c<Foo1>,hana::type_c<Foo2>);

有类似的东西:

template < typename ... Ts >
struct Final {

  constexpr Final(Ts && ... args) {}
};

hana::unpack(foo, [] (auto && ... args) { return Final(args...); });

因为使用该代码,unpack不能推断lambda / function类型.
基本上我想创建一个带有参数列表的类型,但我有一个包含参数的元组.

解决方法:

问题在于你的lambda:

[](auto && ... args){ return Final(args...); }
//                          ~~~~~~~

Final不是一个类型,它是一个类模板.因此,您需要明确提供类型.就像是:

[](auto&&... args){ return Final<decltype(args)...>(
    std::forward<decltype(args)>(args)...); }

在C17中,对于类模板参数的模板推导,Ts&&amp ;;不起转发引用的作用(见related answer),因此隐式扣除指南无论如何都不符合您的使用情况,因为您只提供左值并且指南需要重新评估.但这会奏效:

[](auto... args){ return Final(std::move(args)...); }
上一篇:Kotlin反射与Java的互操作性


下一篇:c – 如何修复编译错误:非模板’iterator1’用作模板[复制]