요약: g_는 mutable 전역 변수에만 쓰자.
C++ 11 에서 새롭게 도입되고 C++14에서 향상된 constexpr 키워드는 컴파일 타임 상수를 의미하며 변수 앞에 적용될 수 있다.
그래서 전역 변수를 쓸 때처럼 constexpr를 정의하면 마치 g_ prefix를 붙여야 할 것 같이 느껴질 수 있다.
하지만 이건 추천하지 않는다.
이건 코딩 스타일/컨벤션의 문제인데, 몇 가지 관점에서 볼 수 있다.
보통 g_는 global variable이라는 의미로 사용된다.
그래서 많은 개발자들이 g_는 변경 가능한 전역 변수 (mutable global state)에만 붙인다고 생각한다.
❓ 그런데 constexpr은?
constexpr은 컴파일 타임 상수이다.
불변 (immutable)이고, 전역 상태의 위험성도 없다.
즉, 일반적인 전역 변수와는 의미가 다르다.
그래서 g_를 붙이면 오히려:
"이 변수는 프로그램 어딘가에서 변경될 수 있는 글로벌 상태인가?"
처럼 오해할 여지가 있다.
만약 프로젝트 컨벤션에서 g_를 mutable 전역 변수에 쓰고 있다면,
constexpr 값에는 안 붙이는 게 좋다.