О функции std :: abs

Этоstd::abs() функция хорошо определена для ВСЕХ арифметических типов в C ++ 11 и будет возвращать|x| без проблем аппроксимации?

Странно то, что с g ++ 4.7,,,,std::abs(char)std::abs(short int)std::abs(int)std::abs(long int) а такжеstd::abs(long long int) кажется, вернуть двойной (напротив:http://en.cppreference.com/w/cpp/numeric/math/abs). И если число приведено к двойному, мы могли бы иметь некоторую ошибку аппроксимации для очень большого числа (например,-9223372036854775806LL = 2^63-3).

Так у меня есть гарантия, чтоstd::abs(x) всегда вернется|x| для всех арифметических типов?

РЕДАКТИРОВАТЬ: вот пример программы, чтобы сделать несколько тестов

#include 
#include 
#include 
#include 

template
void abstest(T x)
{
    static const unsigned int width = 16;
    const T val = x;
    if (sizeof(val) == 1) {
        std::cout

Ответы на вопрос(4)

Ваш ответ на вопрос