나는 constexpr이면 일단 어딘가에 그 값이 하드코딩 되어 있을테니 당연히 프로그램이 끝날 때 까지 값이 살아있겠지? 라고 생각하고 실험을 해봤음
1 2 3 4 5 6 7 8 9 10 11 12 | #include <iostream> #include <array> int main(void) { auto x = []() { constexpr auto list = std::array<int, 10>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; return list.begin(); }(); std::cout << *(x+5); return 0; } | cs |
그런데 결과가 매번 달라지더라고.. 딱히 그렇진 않았던거임
1 2 3 4 5 6 7 8 9 10 11 12 | #include <iostream> #include <array> int main(void) { auto x = []() { static constexpr auto list = std::array<int, 10>{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; return list.begin(); }(); std::cout << *(x+5); return 0; } | cs |
결론적으로 이게 제대로 돌아가는 코드였음