Преобразование char[] -> char* при перегрузке функций
От: tcoder  
Дата: 29.04.07 04:26
Оценка:
Имеется следующий код:
void f(char(&)[8]);
void f(char*);
int main()
{
    char b[8];
    f(b);
}

Visual ругается на него (аналогично ведет себя и g++):
test.cpp(6) : error C2668: 'f' : ambiguous call to overloaded function
        test.cpp(2): could be 'void f(char *)'
        test.cpp(1): or 'void f(char (&)[8])'
        while trying to match the argument list '(char [8])'

Кто-нибудь может объяснить почему? Ведь первый вариант функции f не требует никакой конверсии аргументов, а второй вариант требует преобразования array-to-pointer (4.2 из стандарта).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.