提问人:Nufun 提问时间:3/21/2022 最后编辑:Nufun 更新时间:3/21/2022 访问量:36
当包装在 method 中时,类型会成功扣除,但在直接别名中使用时则不会
Type is deducted successfully when is wrapped in method, but not when used in direct alias
问:
类型演绎被包装方法的代码
struct InterfaceOverriderFactory
{
template <typename Interface>
decltype(auto) operator()(Type<Interface>) const noexcept
{
return typename FunctionArguments::InvokeOperatorArguments<Interface>{};
}
};
别名(用作扣除指南)
template <typename Interface, typename Code>
using IO = typename std::invoke_result_t<InterfaceOverriderFactory, Type<Interface>>::PushFront<Code>::PushFront<Interface>::WithT<InterfaceOverrider>;
相同的代码,但没有将其包装在方法中
template <typename Interface, typename Code>
using IO = typename FunctionArguments::InvokeOperatorArguments<Interface>::PushFront<Code>::PushFront<Interface>::WithT<InterfaceOverrider>;
这两个代码片段都用于
template <typename ...Interfaces, typename ...Codes>
Strategy(std::pair<type::Type<Interfaces>, Codes>...) -> Strategy<type::IO<Interfaces, Codes>...>;
对于通过方法推断类型的代码,我有Strategy<SomeTypes...>
对于直接别名 -Strategy<>
此代码通过模板 <typename... 返回保存类型的结构参数>
FunctionArguments::InvokeOperatorArguments<Interface>
因此,我想使“相同的代码,但不将其包装在方法中”段落中的代码工作,或者如果无法知道原因
答: 暂无答案
评论
FunctionArguments::InvokeOperatorArguments<Interface>