Compreendendo os meandros de abs() em C++: resultados inesperados

Atualmente estou trabalhando com a função abs() em C++ e encontrando resultados inesperados em determinados cenários. Aqui está um trecho do código em questão:

#include <iostream>
#include <cmath>

int main() {
    int num1 = 5;
    int num2 = -8;

    // Using abs() function
    int absResult1 = abs(num1);
    int absResult2 = abs(num2);

    std::cout << "Absolute value of " << num1 << ": " << absResult1 << std::endl;
    std::cout << "Absolute value of " << num2 << ": " << absResult2 << std::endl;

    return 0;
}

Apesar da aparente facilidade de uso do abs(), o resultado não corresponde às minhas expectativas. Procurei em muitos sites, mas alguém poderia esclarecer possíveis preocupações com a função C++ abs() e oferecer informações sobre como obter valores absolutos precisos? especialmente ao lidar com números inteiros negativos? Além disso, existem abordagens ou considerações alternativas ao trabalhar com a função abs() em C++?

Qual a saída do seu código e qual era o resultado esperado? Porque eu testei aqui o seu código e parece correto.

   $ g++ -o teste teste.cpp
   $ ./teste
   Absolute value of 5: 5
   Absolute value of -8: 8

Você precisa do tipo correto basicamente