Документ [принятых] стандартов N4280 добавляет несколько новые функции, не являющиеся членами, будут включены в C++17.
Есть замечания, указывающие на правильные возвращаемые значения для каждой из новых функций, не являющихся членами, и, в частности, меня смущает перегрузка std::empty
для массивов фиксированного размера. В документе предполагается, что возвращаемое значение для этой перегрузки всегда будет false
; что все массивы фиксированного размера никогда не будут пустыми.
Почему это так? Насколько мне известно, возможно (хотя, возможно, и бесполезно) иметь массив нулевого размера, как в int x[0];
, который я бы назвал пустым.
Для справки, конкретная перегрузка, о которой я говорю:
template <class T, size_t N> constexpr bool empty(const T (&array)[N]) noexcept;
-pedantic
на g++, вы фактически получитеISO C++ forbids zero-size array
. Также актуально: stackoverflow.com/a/10353341/234175 - person greatwolf   schedule 24.12.2014-pedantic
, потому что быстро протестировал его на ideone.com. Спасибо! - person Mark   schedule 24.12.2014std::empty
, как и с любым другим контейнером. - person cdhowie   schedule 24.12.2014