В приведенном ниже примере я пытаюсь передать адрес непосредственной функции foo в качестве нетипового аргумента шаблона класса A дважды: один раз внутри панели непосредственной функции и второй раз в обычном контексте:
Код: Выделить всё
consteval void foo() {}
template struct A{ int i = 1; };
consteval auto bar() {
return A{};
}
// ok in GCC and MSVC
auto a = bar();
// ok in GCC only
auto b = A{};
- Clang отклоняет обе попытки с ошибкой:
- MSVC отклоняет только второй случай auto b = A{}; с ошибкой:
- И GCC принимает оба случая. Онлайн-демо
Подробнее здесь: https://stackoverflow.com/questions/798 ... e-argument
Мобильная версия