C ++ 20 Sfinae Trailing vs Leader требуется в функции члена в шаблоне классаC++

Программы на C++. Форум разработчиков
Anonymous
C ++ 20 Sfinae Trailing vs Leader требуется в функции члена в шаблоне класса

Сообщение Anonymous »

У меня есть C ++ 17 кусок кода Sfinae < /p>

Код: Выделить всё

#include 

template
constexpr bool dependentFalse = false;

template
struct IAmEmpty
{
template
auto deleteMe()
{}

};

template struct IAmEmpty;
https://godbolt.org/z/vww3favwj
Я пытаюсь переработать это на C ++ 20, и мне интересно:

#include

template
struct IAmEmpty
{
template
requires false
void deleteMe() {}

void deleteMeToo() requires false {}
};

template struct IAmEmpty;
< /code>
Насколько я понимаю, ведущие требования близки к Pre-c ++ 20 Sfinae, достигнутую с использованием, например, enable_if , void_t и т.п. Поэтому Deleteme < /code> на самом деле является шаблоном функции члена.

Код: Выделить всё

deleteMeToo
is not a function template (or am I wrong here?).
Live example:
https://godbolt.org/z/rGzx8dz3f
Are there any situations when deleteMe and deleteMeToo actually behave differently and should one care when preferring trailing requires over the leading one?

Подробнее здесь: https://stackoverflow.com/questions/795 ... s-template

Вернуться в «C++»