간단한 로컬 람다 함수를 오버로드하는 방법은 무엇입니까?
원래 문제의 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
같은 이름을 재사용 할 수없는 지역 변수 일뿐입니다.