- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 GCC 7.3 与 C++17 一起使用,但我不明白为什么这一行会失败:
template <typename... Args>
using X = std::invoke_result<std::tie, Args...>::type;
错误是:
error: type/value mismatch at argument 1 in template
parameter list for ‘template<class _Functor, class ... _ArgTypes>
struct std::invoke_result’
using X = std::invoke_result<std::tie, Args...>::type;
note: expected a type, got ‘std::tie’
最佳答案
都在错误信息中:
note: expected a type, got ‘std::tie’
invoke_result
是一个接受一堆类型的元函数。 std::tie()
是一个函数模板 - 它不是一个类型。它甚至不是一个对象,所以你不能做 invoke_result<decltype(std::tie), Args...>
要么。
什么 invoke_result
给你的是一种适用于所有类型可调用对象的语法。但是你不需要 std::tie
- 它是一个函数模板,因此您可以在未计算的上下文中直接调用它:
template <typename... Args>
using X = decltype(std::tie(std::declval<Args>()...));
注意:除非您真的、特别需要元函数本身,否则请始终使用 _t
别名。即 std::invoke_result_t<...>
而不是 std::invoke_result<...>::type
.后者无论如何都是错误的,因为你错过了 typename
关键字 - 别名消除了这种需要。
关于c++ - std::invoke_result on std::tie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54989993/
我正在尝试使用 std::invoke_result_t并且在函数中调用嵌套 lambda 时失败 auto返回类型。这是一个复制器: template auto print_ret_type(T
给定大量采用不同类型参数的重载函数,有没有办法在编译时在模板化上下文中获取特定重载的返回类型或其中一种参数类型?例如,考虑这种情况,其中重载函数将参数引用作为输出值: struct struct_a
关于 cppreference , 据记载,std::result_of 的正确使用方式是: template std::result_of_t // instead of std::result_o
我将 GCC 7.3 与 C++17 一起使用,但我不明白为什么这一行会失败: template using X = std::invoke_result::type; 错误是: error: ty
如何为成员函数正确调用 invoke_result?或者专门针对运算符成员函数。我试过 std::invoke_result没有成功。在这种情况下,正确的语法是什么? 最佳答案 不要。使用 declt
我正在尝试执行以下操作: struct Unwrapper { template auto operator()(const T& arg, std::enable_if_t, voi
这纯粹是为了在做泛型编程时获得更多知识。如何确保作为模板参数传递给另一个函数的函数的返回类型,该函数可以采用不同数量的参数(0 到 N)。 编辑:我正在尝试使用 std::invoke_result
我想用自定义删除器声明 std::unique_ptr,它将一些参数绑定(bind)到特定函数: using namespace std::placeholders; using HandleDele
我是一名优秀的程序员,十分优秀!