C++에 C# nullable, 혹은 null object pattern을 대체할 문법을 구현해야 함


obj->f1()->f2(1)->f3(1, a)


C#에서 nullable 타입을 반환한다면


null에 메서드를 호출하면 아무 효과도 없고 세그멘테이션 폴트를 피하잖아?


이걸 메서드 1회 호출로 해내고 싶음


적용해야하는 범위가 방대하기 때문에 null object pattern을 적용하면


더미 메서드를 산더미처럼 만들어야하는데다 지저분해져서 지양하고 싶음


원본 코드

obj->f1()->f2(1)->f3(1, a)


변환된 기대 효과

r1 = obj->f1()

if (r1) {

   r2 = r1->f2(1);

   if (r2) {

     f3(1, a)

   }

}


예제 템플릿 호출

T( (T( T(obj, f1), f2, 1) f3, 1, a)


이런 식의 코드로 동일한 효과를 볼 수 있도록


템플릿 T를 구현하는게 논리적으로 가능한지부터를 몰라서 질문한거임


혹시 감이 올까?