Код IT
← Каталог

Объектно-ориентированное программирование в C++ — Концепции (C++20) — читаемость вместо SFINAE

Фрагмент из «Объектно-ориентированное программирование в C++»: Концепции (C++20) — читаемость вместо SFINAE.

C++ main.cpp
#include <concepts>

template<std::integral T>
T abs(T x) {
    return x < 0 ? -x : x;
}

template<std::floating_point T>
T abs(T x) {
    return x < 0 ? -x : x;
}

// Или обобщённо:
template<typename T>
requires std::integral<T> || std::floating_point<T>
T abs(T x) { /* ... */ }
#include <concepts>

template<std::integral T>
T abs(T x) {
    return x < 0 ? -x : x;
}

template<std::floating_point T>
T abs(T x) {
    return x < 0 ? -x : x;
}

// Или обобщённо:
template<typename T>
requires std::integral<T> || std::floating_point<T>
T abs(T x) { /* ... */ }