перегрузка операторов в C++

Landstreicher

Объясните пожалуйста что и почему должна выдавать следующая программа:


#include <stdlib.h>
#include <string>
void test(bool a)
{
printf("bool version called\n");
}
void test(std::string a)
{
printf("string version called\n");
}
int main
{
test("string");
return 0;
}

dberezhnoy

Ты серьезно?

1234554321

что: bool version...
почему: идёт неявное преобразование сначала в указатель на константу, потом оный в bool. Приоритет такого преобразования выше, чем у преобразования в стринг.

Landstreicher

так собственно в том и вопрос, почему приоритет выше?
это в стандарте так сказано? если да, то тыкните мне ссылкой на соотв. место

1234554321

Могу ткнуть только в ARM - в специальном издании(последнее) страница 192 и ссылки с неё...
Оставить комментарий
Имя или ник:
Комментарий: