LINUX.ORG.RU

C++ выбор версии функции при перегрузке и char

 , , ,


0

4

Добрый день.
Имеется gcc 5.4.0 и c++11.
Почему в коде ниже выбирается версия функции с аргументом int, а не signed char (при отсутствии функции с аргументом int, выполняется версия с signed char). И где бы почитать про алгоритм выбора наиболее подходящей функции в подобных ситуациях?

#include <iostream>

void func(signed char c)
{
    std::cout << "signed char" << std::endl;
}

void func(int c)
{
    std::cout << "int" << std::endl;
}

int main()
{
    char ch = 'x';
    func(ch);

    return 0;
}

★★★★★

Потому что приводить всё равно надо, и вовсе не факт, что твой char - signed, а приведение к инту проходит без урезания и предпочитается он.

Ivan_qrt ★★★★★
()

Добро пожаловать в мир implicit conversion.

RazrFalcon ★★★★★
()
Ответ на: комментарий от KennyMinigun

за прикол с

std::is_same<int, signed int>::value == true

спасибо...

xperious ★★
()

Всем спасибо.

rumgot ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.