Passando um parâmetro para uma função de comparação?

Ao usar o algoritmo de classificação STL em um vetor, quero passar minha própria função de comparação, que também aceita um parâmetro.

Por exemplo, idealmente, quero fazer uma declaração de função local como:

int main() {
    vector<int> v(100);
    // initialize v with some random values

    int paramA = 4;

    bool comp(int i, int j) {
        // logic uses paramA in some way...
    }

    sort(v.begin(), v.end(), comp);
}

No entanto, o compilador reclama disso. Quando tento algo como:

int main() {
    vector<int> v(100);
    // initialize v with some random values

    int paramA = 4;

    struct Local {
        static bool Compare(int i, int j) {
            // logic uses paramA in some way...
        }
    };

    sort(v.begin(), v.end(), Local::Compare);
}

O compilador ainda reclama: "erro: uso do parâmetro da função que contém"

O que devo fazer? Devo fazer algumas variáveis globais com uma função de comparação global ..?

Obrigado.

questionAnswers(4)

yourAnswerToTheQuestion