¿Pasar un parámetro a una función de comparación?

Cuando uso el algoritmo de ordenación STL en un vector, quiero pasar mi propia función de comparación que también toma un parámetro.

Por ejemplo, idealmente quiero hacer una declaración de función 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);
}

Sin embargo, el compilador se queja de eso. Cuando intento 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);
}

El compilador aún se queja: "error: uso del parámetro de la función que contiene"

¿Qué tengo que hacer? ¿Debo hacer algunas variables globales con una función de comparación global ...?

Gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta