别名函数定义 - 可能VS2013错误?

时间:2015-04-28 23:06:11

标签: c++ visual-c++

我想为函数定义添加别名,如下面的代码所示。当第一个函数参数不是基本类型时,存在编译器错误。我假设这是一个编译器错误。有什么想法吗?使用预处理器有一种解决方法,但这并不理想。 编译错误是:error C2061: syntax error : identifier 'string'

#include <iostream>
#include <string>
#include <functional>

void print1(int i, std::string s)
{
    std::cout << s << i << std::endl;
}

void print2(std::string s, int i)
{
    std::cout << s << i << std::endl;
}

int main()
{
    using FunDefn1 = void(int, std::string);   // OK
    //using FunDefn2 = void(std::string, int); // error C2061: syntax error : identifier 'string'

    // Workaround...
    #define FunDefn2 void(std::string, int)

    std::function<FunDefn1> p1 = print1;
    std::function<FunDefn2> p2 = print2;

    p2("Hello World!", 42);
    p1(42, "Hello World!");

    return 0;
}

0 个答案:

没有答案