为什么operator() with type argument可以应用于result_of上下文中的type?

Why does operator () with type argument can be applied to type in the context of result_of?

据我了解,result_of_t 应该是一种类型,它将在表达式求值的末尾。 decltype(&foo) 在下面的代码中产生类型 int (*)(int),但是 (int)decltype 之外是什么?

#include <type_traits>

int foo(int) {
    return 0xdeadbeef;
}

int main()
{
    using T = std::result_of_t<decltype(&foo)(int)>;
    T t;
    return 0;
}

but what does (int) outside of decltype?

这让我们很困惑。 std::result_of 以 "cute" 方式定义。它专用于 F(Args...)。其中 F 是仿函数类型,而 Args... 是输入给它的参数。

在您的例子中,(int) 是调用的参数。

这和定义的某些其他怪癖是 std::result_of 在 C++17 中被弃用并替换为 std::invoke_result 的原因。