Ответ 1
Clang верен, ключевая формулировка в [expr.new] p6 отличается от следующей в черновике C++ 11:
Каждое константное выражение в деклараторе noptr-new должно быть целочисленным константным выражением ([expr.const]) и иметь строго положительное значение. Выражение в noptr-new-объявителе должно иметь целочисленный тип, тип перечисления с незаданной областью или тип класса, для которого существует единственная неявная функция преобразования в тип перечисления с целой или незаданной областью ([class.conv]). Если выражение имеет тип класса, выражение конвертируется путем вызова этой функции преобразования, и результат преобразования используется вместо исходного выражения....
Каждое константное выражение в объявителе noptr-new должно быть преобразованным константным выражением ([expr.const]) типа
std::size_t
и должно принимать строго положительное значение. Выражение в деклараторе noptr-new неявно преобразуется вstd::size_t
...
В C++ 14 требование для выражения в noptr-new-деклараторе было ослаблено, чтобы не требовать целочисленного перечисления с незаданной областью или класса с единственной неявной функцией преобразования для одного из этих типов, а просто разрешать неявные преобразования в size_t,
Изменения в формулировке произошли от предложения A Tweak Certain C++ Contextual Conversions, v3.