Я экспериментировал с constexpr
. В моем тестовом компиляторе (g++ 4.6) это не удается скомпилировать с ошибкой об отсутствии доступа к границам. Требуется ли компилятор определить это во время компиляции?
#include <iostream>
constexpr const char *str = "hi";
constexpr int fail() {
return str[1000]; // Way past the end!
}
template <int N>
struct foo {
static void print() { std::cout << N << std::endl; }
};
int main() {
foo<fail()>::print();
}