LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Ты можешь делать любой указатель, UB будет когда произойдёт разыменование указателя.

Попробуй так:

static const int arrs[10]{};

void foo() {
    constexpr const int* y = arrs + 11;
    constexpr int x = *y;
}
main.cpp: In function 'void foo()':

main.cpp:5:23: error: array subscript value '11' is outside the bounds of array 'arrs' of type 'const int [10]'

    5 |     constexpr int x = *y;

      |                       ^~

main.cpp:1:18: note: declared here

    1 | static const int arrs[10]{};

      |                  ^~~~

Исходная версия fsb4000, :

Ты можешь делать любой указатель, UB будет когда произойдёт разыменование указателя.

Попробуй так:

static const int arrs[10]{};

void foo() {
    constexpr const int* y = arrs + 13;
    constexpr int x = *y;
}
main.cpp: In function 'void foo()':

main.cpp:5:23: error: array subscript value '11' is outside the bounds of array 'arrs' of type 'const int [10]'

    5 |     constexpr int x = *y;

      |                       ^~

main.cpp:1:18: note: declared here

    1 | static const int arrs[10]{};

      |                  ^~~~