Encontre elementos de std :: set por comparação personalizada com valor de tipo diferente

Considere o seguinte exemplo de brinquedo de umstd::set com um comparador personalizado:

#include <set>

struct A {
  A() : a(cnt++) {}
  const int a;
  static int cnt;
};

int A::cnt = 0;

struct comp {
  bool operator()(const A& left, const A& right)
  {
    return left.a < right.a;
  }
};

int main()
{
  std::set<A, comp> sa;
  for (int i = 0; i < 10; ++i) sa.insert(A());
  return 0;
}

Observe queA simplesmente não pode ser criado a partir de um número inteiro.

Eu gostaria de procurar umA com um determinado valor deA::a nosa, sem construir um objeto temporário do tipoA, ou seja, estou procurando por algo como

sa.find(4)

com um comparador personalizado que permite a comparação direta de números inteiros com objetos do tipoA. Isso é possível?

questionAnswers(1)

yourAnswerToTheQuestion