tributos de função pura / const em diferentes compilador

pur é um atributo de função que indica que uma função não modifica nenhuma memória globa
const é um atributo de função que indica que uma função não lê / modifica nenhuma memória globa

Dada essa informação, o compilador pode fazer algumas otimizações adicionai

Exemplo para o GCC:

float sigmoid(float x) __attribute__ ((const));

float calculate(float x, unsigned int C) {
    float sum = 0;
    for(unsigned int i = 0; i < C; ++i)
        sum += sigmoid(x);
    return sum;
}

float sigmoid(float x) { return 1.0f / (1.0f - exp(-x)); }

Nesse exemplo, o compilador poderia otimizar a funçãocalcula para

float calculate(float x, unsigned int C) {
    float sum = 0;
    float temp = C ? sigmoid(x) : 0.0f;
    for(unsigned int i = 0; i < C; ++i)
        sum += temp;
    return sum;
}

Ou se o seu compilador for inteligente o suficiente (e não tão rigoroso quanto às flutuações):

float calculate(float x, unsigned int C) { return C ? sigmoid(x) * C : 0.0f; }

Como posso marcar uma função dessa maneira para os diferentes compiladores, ou seja, GCC, Clang, ICC, MSVC ou outro

questionAnswers(2)

yourAnswerToTheQuestion