У меня есть следующая вспомогательная функция:
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'
Я надеялся, что кто-то может пролить свет на то, что я делаю неправильно.