Следующее работает как ожидалось:
#include <array>
constexpr std::array<int, 3> values = {1, 2, 3};
template <int i> struct A { static constexpr int val = values[i]; };
int main() { A<1> a; }
Однако я получаю ошибку компилятора от компилятора MSVC, если мы используем values.size()
в качестве параметра шаблона:
int main() { A<values.size()> a; }
Ошибкаis выражение не оценивается как константа .GCC компилируется без ошибок.
- Это ошибка компилятора MSVC?
- Существует ли стандартный / умный способ обойти эту ошибку?