Ответ 1
Использование godbolt показывает, что в режиме -std=c++1z
Clang 3.5.1 принимает код, но 3.6.0 отклоняет его. changelog указывает, что эта версия была, когда была добавлена поддержка функций С++ 1z, а именно: "Постоянная оценка для всех аргументов шаблона непигового типа". Я предполагаю, что в режимах С++ 11 и С++ 14 используются правила С++ 11, тогда как режим С++ 1z использует правила проекта С++ 1z/latest. Конечно, тот факт, что программа считается действительной в режиме С++ 11/14, является самой ошибкой.
Вот некоторые сообщения об ошибках с похожими (но не связанными напрямую) случаями:
Ошибка 10398 - Clang не будет принимать константу нулевого указателя как аргумент шаблона непигового
Ошибка 10396 - сбой во время управления именем с параметром шаблона непигового
Ошибка 9700 - Нулевой указатель не принимается как аргумент шаблона непигового