TGViewer
C++ and other lectures C++ and other lectures @cpp_lects_rus · 9.94K subscribers
Post #343 9.64K
Всем привет. Сегодняшний пятничный чилаут будет посвящён выводу типов для множеств перегрузок (да, продолжаю готовиться к C++ Russia).

В принципе с этим нет проблем, особенно если мы подсказываем что делать.

int bar(int) { return 0; }
int bar(double) { return 1; }

template <typename T>
int foo(T t, int (*)(T)) { return bar(t); }

foo(42, &bar); // OK, T -> int


https://godbolt.org/z/fT1oondqs

Но это в принципе, а в общем случае, что будет, если мы подскажем не всё?

int bar(int, char) { return 0; }
int bar(double, long) { return 1; }

template <typename T, typename U>
int foo(T t, int (*)(T, U)) { return bar(t, 0); }

foo(42, &bar); // OK?


https://godbolt.org/z/K5qjYW4d1

Тут мнения gcc и clang расходятся. Один компилятор (gcc) считает, что ему подсказали достаточно. Другой (clang) говорит "candidate template ignored: couldn't infer template argument 'U'".

А вы что скажете? Как обычно ожидаются ссылки на стандарт.

#questions
godbolt.org Compiler Explorer - C++ int bar(int) { return 0; } int bar(double) { return 1; } template <typename T> int foo(T t, int (*)(T)) { return bar(t); } int main() { return foo(42, &bar); }
  • 🤔 30
  • ❤ 10
  • 👍 5
  • 🤮 2
  • ❤‍🔥 1
More from @cpp_lects_rus
  1. Sep 22, 2026В четверг вечером провожу встречу со студентами и преподавателями ВШЭ. В планах: короткий…
  2. Sep 19, 2026Многие люди, прошедшие мой базовый курс языка C спрашивали -- а что дальше. Ведь мир языка…
  3. Sep 12, 2026Участвую в Ghost in the Code, рассылке YADRO о работе с легаси на C++. Удивительно ламповы…
  4. Sep 10, 2026Выложили доклад моего аспиранта и коллеги Владислава Белова @sick_hoof по алиасингу памяти…
  5. Sep 5, 2026Мне начали кидать в личку всякие странные видео из бентосных интернетов, появляющиеся (сей…
  6. Sep 3, 2026Выложили доклад моего студента и коллеги Саши Романова про рефлексию в C++. С моей точки з…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →