std :: max () и std :: min () not constexpr

Я только что заметил, что новый стандарт определяет min (a, b) и max (a, b) без constexpr .

] Примеры из 25.4.7, [alg.min.max]:

template<class T> const T& min(const T& a, const T& b);
template<class T> T min(initializer_list<T> t);

Какая жалость? Я бы хотел написать

char data[ max(sizeof(A),sizeof(B)) ];

вместо

char data[ sizeof(A) > sizeof(B) ? sizeof(A) : sizeof(B) ];
char data[ MAX(sizeof(A),sizeof(B)) ]; // using a macro

. Любая причина, по которой эти не могут быть constexpr ?

34
задан Jeffrey Bosboom 14 July 2016 в 04:23
поделиться