목적은 Construct On First Use와 같다. 즉, global static object, global object 초기화 순서가 명확하지 않아서 발생하는 static initialization order fiasco를 막기 위한 idiom이다.
Construct On First Use는 local static object가 초기화되는 시점을 이용했던 반면, Nifty Counter는 다른 translation unit이면 링커가 정렬해주는 순서에 군말 없이 따라야 하지만 같은 translation unit이면 소스 코드 상에 먼저 나타난 놈이 먼저 초기화된다는 사실을 이용한다. 그리고 Construct On First Use와 달리 다른 global static object, global object를 초기화해주는 보조적인 역할을 한다.
