Здравствуйте, vdimas, Вы писали:
V>Ну. В C# — нельзя.
V>Это я к тому, что в отличие от С++, в случае дотнета в сам язык/платформу надо включать много чего, для повышения выразительности.
V>Например, см. идиому С++ enable_if — она работает сугубо за счёт уже имеющихся ср-в языка.
Это конечно верно. Но всё же enable_if была достаточно некомфортна для повседневной работы, т.к. требовалось определять новые специализации и т.п. Поэтому теперь (с C++17) у нас имеется крайне удобная конструкция "if constexpr" (явно спёртый из D "static if"), которая позволяет элементарно писать такие вещи:
template <typename T> auto get_value(T t)
{
if constexpr (is_pointer_v<T>) return *t;
else return t;
}
Это естественно без проблем записывается и через enable_if, но гораздо менее удобно. )