1 |
|
동기
1 |
|
물론 보통은 이렇게 만든다.
1 |
|
왜 저런 동작을 하는가?
람다 표현식은 다른 곳에 함수를 만들고 그 참조를 가져오는 것이므로, 매번 새로 만들어 지지 않는다. 따라서 일반 함수의 static 변수 처럼 작용한다.
static 변수의 초기화
static 변수의 초기화는 반드시 한번만 일어난다. 즉, 한번만 쓸 수 있는 함수를 만들 수 있다.
1 |
|
한계점
define을 이용하므로, 비 직관적이다. 평가 된 후 eval_once를 호출하는것으로 보여 효과가 있을지 처음 보는 사람에겐 혼란을 준다. 이게 Well-defined인지는 내일의 나에게 물어보도록 하자