On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 15.11.19 17:35. Заголовок: Баг компилятора clang HEAD 10.0.0 в отношении using объявления и аргументов по умолчанию для функций


Следующая демонстрационная программа не компилируется компилятором clang HEAD 10.0.0

 
#include <iostream>

namespace N1
{
void f( int x ) { std::cout << "f( " << x << " )\n"; }
}

using N1::f;

namespace N1
{
void f( int = 10 );
}

int main()
{
f();
}


Компилятор выдает следующее сообщение об ошибке
 
prog.cc:17:5: error: no matching function for call to 'f'
f();
^
prog.cc:5:10: note: candidate function not viable: requires single argument 'x', but no arguments were provided
void f( int x ) { std::cout << "f( " << x << " )\n"; }
^
1 error generated.

Компилятор gcc HEAD 10.0.0 20191 компилирует эту программу успешно, и на консоль выводится текст
f( 10 )


Код программы совершенно корректный. Согласно стандарту C++ 20 ( 9.2.3.6 Default arguments, параграф №9)


 цитата:
When a declaration of a function is introduced by way of a using-declaration (9.8), any default argument information associated with the declaration is made known as well. If the function is redeclared thereafter in the namespace with additional default arguments, the additional arguments are also known at any point following the redeclaration where the using-declaration is in scope



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]





ссылка на сообщение  Отправлено: 09.12.19 14:50. Заголовок: Интересно отметить, ..


Интересно отметить, что этот баг компилятора не проявляется, если у функции имеется ,более одного параметра. Например, следующая программа компилируется успешно.

 
#include <iostream>

namespace N1
{
void f( int x, char c )
{
std::cout << "f( int " << x << ", char " << c << " )\n";
}
}

using namespace N1;

namespace N1
{
void f( int x = 10, char c = 'A' );
}

int main()
{
f( 10 );
f();
}

Вывод программы на консоль
 
f( int 10, char A )
f( int 10, char A )


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 5
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет