статический указатель на функцию constexpr, разница между компиляторами

При ответеэтот вопросЯ попробовал следующий код с gcc (код скомпилирован) и лязг (код отклонен):

typedef long (*func)(int);

long function(int) { return 42; }

struct Test
{
    static constexpr func f = &function;
};

template
struct Call
{
    static void f()
    {
        c(0);
    }
};

int main()
{
    Call::f();
}

Я не уверен, какой компилятор прав, хотя я думаю, что инициализация constexprTest::f в порядке Вывод ошибки clang:

error: non-type template argument for template parameter of pointer type 'func'
       (aka 'long (*)(int)') must have its address taken
Какой компилятор прав?Если clang прав, почему и что на самом деле означает эта ошибка?

РЕДАКТИРОВАТЬ: для "Зачем", увидетьDYP»С вопросом.

Ответы на вопрос(1)

Ваш ответ на вопрос