我想为函数定义添加别名,如下面的代码所示。当第一个函数参数不是基本类型时,存在编译器错误。我假设这是一个编译器错误。有什么想法吗?使用预处理器有一种解决方法,但这并不理想。
编译错误是: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;
}