Re[20]: IEquatable<T>
От: alex_public  
Дата: 20.02.17 14:42
Оценка:
Здравствуйте, 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, но гораздо менее удобно. )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.