如何重载简单的本地lambda函数?
SSE原始问题:
#include <iostream>
#include <map>
void read()
{
static std::string line;
std::getline(std::cin, line);
auto translate = [](int idx)
{
constexpr static int table[8]{ 7,6,5,4,3,2,1,0 };
return table[idx];
};
auto translate = [](char c)
{
std::map<char, int> table{ {'a', 0}, {'b', 1}, {'c', 2}, {'d', 3},
{'e', 4}, {'f', 5}, {'g', 6}, {'h', 7} };
return table[c];
};
int r = translate(static_cast<int>(line[0]));
int c = translate(static_cast<char>(line[1]));
std::cout << r << c << std::endl;
}
int main()
{
read();
return 0;
}
错误讯息
error: conflicting declaration 'auto translate'
note: previous declaration as 'read()::<lambda(int)> translate'
请不要介意不检查用户输入,这是一个SSE。
translate
只是不能重复使用相同名称的局部变量。