Всем привет. Очередная лекция по компиляторам завтра в 9 утра, а сегодня вечер пятницы и небольшой брейн-тизер по C++.



template<typename T = void>

int foo(int x) { return 1; }



int foo(...) { return 2; }



template<typename T = void>

int bar() { return 1; }



int bar(...) { return 2; }



int main() {

std::cout << foo(2) << std::endl; // ?

std::cout << bar() << std::endl; // ???

}




https://godbolt.org/z/qfsEvxh4E



Громадное спасибо за него Владиславу Белову https://t.me/you_are_RTshnik наткнувшемуся на эту красоту во время выполнения одного из моих заданий.



Задача довольно обычная — объяснить в чём разница с детальными ссылками на C++23. Призов не будет, кроме зрительских симпатий.



P. S. книгу обещают перепечатать к 15 ноября.



UPD: Уважаемый подписчик Артём Колпаков @ddvamp развил и усилил пример до https://godbolt.org/z/ab31ah199



#questions #cpp_postgraduate