Что такое агрегаты и POD и как / почему они особенные?

Ограничения не являются частью подписи, но являются параметрами. И ограничения в параметрах применяются во время разрешения перегрузки.

Итак, давайте поместим ограничение в параметр. Это уродливо, но оно работает.

class RequireStruct<T> where T : struct { }
class RequireClass<T> where T : class { }

static void Foo<T>(T a, RequireStruct<T> ignore = null) where T : struct { } // 1
static void Foo<T>(T? a) where T : struct { } // 2
static void Foo<T>(T a, RequireClass<T> ignore = null) where T : class { } // 3

(лучше на шесть лет позже, чем никогда?)

510
задан ThomasMcLeod 11 June 2018 в 14:32
поделиться