У меня есть следующая вспомогательная функция:
template<typename T, std::size_t N>
constexpr std::size_t Length(const T(&)[N]) {
    return N;
}
Который возвращает длину статического массива. В прошлом это всегда срабатывало, но когда я это делаю:
struct Foo
{
    unsigned int temp1[3];
    void Bar()
    {
        constexpr std::size_t t = Length(temp1); // Error here
    }
};
Я получаю сообщение об ошибке при использовании MSVS 2017:
error C2131: expression did not evaluate to a constant note: failure was caused by a read of a variable outside its lifetime note: see usage of 'this'
Я надеялся, что кто-то может пролить свет на то, что я делаю неправильно.
