С++ задачи и вопросы
566 subscribers
556 photos
4 files
201 links
Задачи, тесты и теоретические вопросы по С++

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
Вопрос на собеседовании

Как работает expression SFINAE в C++, и чем оно отличается от обычного SFINAE?

Ответ ⬇️
SFINAE (Substitution Failure Is Not An Error) позволяет компилятору отбрасывать неподходящие шаблонные перегрузки без генерации ошибок. Expression SFINAE — это техника, когда проверяется не только наличие типа, но и возможность вызова выражения с ним.

Обычный SFINAE работает с typename, а expression SFINAE используется в decltype() для проверки существования конкретных операций или методов в типе.

Пример использования ⚙️
#include
#include

// Проверяем, есть ли у типа метод size()
template
auto has_size(int) -> decltype(std::declval().size(), std::true_type{}) {
return {};
}

template
std::false_type has_size(...) { return {}; }

int main() {
std::cout

@quizcpp