В настоящее время я работаю над программой и хочу передать указатель функции на карту для пользовательского компаратора.В следующем минимальном, проверяемом примере, однако, это приводит к ошибкам:
#include <iostream>
#include <map>
struct CustomKey{
unsigned a;
};
bool compareCustom(const CustomKey &a, const CustomKey &b){
return a.a < b.a;
}
typedef decltype(compareCustom) CustomComparator;
int main(){
std::map<CustomKey, unsigned, CustomComparator> customMap(&compareCustom);
return 0;
}
Компиляция приведенного выше кода с использованием GCC или Clang приводит к множеству неинформативных ошибок шаблона, полностью сосредоточенных вокруг внутренней реализации std::map
. Этот вопрос , по-видимому, говорит о том, что передача типа указателя на функцию совершенно допустима.В чем проблема с моим кодом?