Aviso de tinido sobre constexpr com modelo estático (a função embutida não está definida)

Eu tenho o seguinte código c ++:

#include <array>
#include <iostream>

typedef unsigned char uchar;

class A {
public:
    template <size_t N, uchar value>
    static inline constexpr std::array<uchar, N> filledArray() {
        std::array<uchar,N> ret{};
        ret.fill(value);
        return ret;
    }

    std::array<uchar, 5> upper = A::filledArray<5, 'A'>();
};

int main() {
    A blah;
    for (int i = 0; i < 5; ++i)
        std::cout << blah.upper[i] << std::endl;
    return 0;
}

O g ++ o compila sem avisos e a saída é As, conforme o esperado. mas clang ++ - 4.0 produz:

clang++-4.0 -std=c++14 main.cpp -o clangOut
main.cpp:9:47: warning: inline function 'A::filledArray<5, 'A'>' is not defined [-Wundefined-inline]
        static inline constexpr std::array<uchar, N> filledArray() {
                                                    ^
main.cpp:15:34: note: used here
        std::array<uchar, 5> upper = A::filledArray<5, 'A'>();
                                        ^
1 warning generated.
/tmp/main-b6fac8.o: In function `A::A()':
main.cpp:(.text._ZN1AC2Ev[_ZN1AC2Ev]+0x15): undefined reference to `std::array<unsigned char, 5ul> A::filledArray<5ul, (unsigned char)65>()'
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Parece que clang é não vê, que eu instanciar a função filledArray. se eu chamar preenchidoArray com os argumentos de modelo apropriados na função principal ou em qualquer outra função, o aviso desaparecerá e o clangOut também será impresso conforme o esperado.

estou fazendo algo estúpido aqui?é a versão do gcc fazendo o que eu acho (inicialize com As no momento da compilação)?isso é um bug no clang?

questionAnswers(2)

yourAnswerToTheQuestion