История изменений
Исправление MOPKOBKA, (текущая версия) :
Я не тупой, пример отсылает к использованию const в сообщении zurg.
Я не знаю как концепты пишутся да и С++ в целом, но вот что то получилось, можно ограничить тип по свойству Trait, и написать функцию которая не сотрет тип.
// trait Trait {}
template <typename T> struct Trait { static const bool value = false; };
// impl Trait for i32
template <> struct Trait<int> { static const bool value = true; };
template <typename T> requires Trait<T>::value
T add(T a, T b) {
return a + b;
}

Исправление MOPKOBKA, :
Я не тупой, пример отсылает к использованию const в сообщении zurg.
Я не знаю как концепты пишутся да и С++ в целом, но вот что то получилось, можно ограничить тип по свойству Trait, и написать функцию которая не сотрет тип.
// trait Trait {}
template <typename T> struct Trait { static const bool value = false; };
// impl Trait for i32
template <> struct Trait<int> { static const bool value = true; };
template <typename T> requires Trait<T>::value
T add(T a, T b) {
return a + b;
}
Исходная версия MOPKOBKA, :
Я не тупой, пример отсылает к использованию const в сообщении zurg.
Я не знаю как концепты пишутся, но вот что то получилось, можно ограничить тип по свойству Trait, и написать функцию которая не сотрет тип.
// trait Trait {}
template <typename T> struct Trait { static const bool value = false; };
// impl Trait for i32
template <> struct Trait<int> { static const bool value = true; };
template <typename T> requires Trait<T>::value
T add(T a, T b) {
return a + b;
}