gpt4 book ai didi

c++ - 调用的返回类型仅使用类型信息而不是对象信息

转载 作者:太空狗 更新时间:2023-10-29 19:51:20 25 4
gpt4 key购买 nike

考虑以下代码:

template <class F, class... Args>
void function(F&& f, Args&&... args)
{
using type1 = decltype(std::forward<F>(f)(std::forwards<Args>(args)...));
using type2 = decltype(/*equivalent expression but only using types */);
}

有没有办法让 type2 在所有情况下都与 type1 相同,但只使用 decltype 表达式中的类型,或者换句话说,只使用 FArgs 而不是 fargs?

最佳答案

您可以仅使用 C++11 并且不使用 std::result_of decltype 来完成此操作:

using type2 = typename std::result_of<F&&(Args&&...)>::type;

Example in compiler explorer .

一旦您开始使用 C++17,您应该将 std::result_of 替换为 std::invoke_result,如 documentation 中所述.

关于c++ - 调用的返回类型仅使用类型信息而不是对象信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com