为std :: function键入别名

San*_*lin 1 c++ function c++11 type-alias

我正在尝试为这种std::function类型添加别名,因为我计划将来使用其他东西.我希望能够轻松地做出改变.但是我从编译器收到一条我不太懂的错误信息.我理解这意味着什么,但我不明白这一点.

例:

#include <functional>

template < typename Ret, typename... Args > using MyFunc = std::function< Ret(Args...) >;

int main(int argc, char **argv)
{
    MyFunc<void(int)> fn;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生:

..\main.cpp|7|required from here|
..\main.cpp|3|error: function returning a function|
Run Code Online (Sandbox Code Playgroud)

yur*_*hek 7

template <typename F>
using MyFunc = std::function<F>;
Run Code Online (Sandbox Code Playgroud)

void(int) 是单一(功能)类型.