이 같은 매크로가 (이 실제 유용하게 사용 사례에서오고,하지만 나는 간단한 경우에 놀았 던) :기능 바인딩 작업
는#define MY_MACRO(M) M(3) M(5) M(7)
#define MULTIPLY_BY_2(A) (2*A)
그때
을 쓸 수 있습니다MY_MACRO(MULTIPLY_BY_2)
// -> (2*3) (2*5) (2*7)
쿨! 내가 원한 것은 이것이다 :
#define MULTIPLY(A,B) (A*B)
MY_MACRO(BIND(MULTIPLY, 2))
위와 같은 결과를 얻으려면. BIND는 무엇이 될 수 있습니까? 나는 해킹을 시도했고, 이것이 거의 가능하다는 것을보고 할 수있다. 그러나 그것은 일반적이지 않고 예쁘지 않습니다. 이 작업을 수행 할 수 있습니까 잘? (즉, 순수한 CPP로 실제 기능적 기능을 구축 할 수 있습니까?) 바운드 매크로를 바인딩 할만큼 충분히 수행 할 수 있습니까?
아마 내가 묻는 것은 당신이 알고있는 모든 선행 처리기 라이브러리에 이와 같은 도구가 있는지 여부입니다. 나는 Boost에서 이와 비슷한 것을 찾지 못했습니다.
전 처리기로 너무 많은 작업을하면 코드가 나중에 디버그/이해할 수있는 악몽이 될 수 있습니다. –
Boost 항목은 Vesa Karvonen의 작업을 기반으로합니다.이 작업은 사전 처리기에서 어휘 환경, 꼬리 재귀 등으로 완전한 함수 언어를 구현 한 것입니다. 따라서 "부스트에서 이와 같은 것을 찾지 못했습니다"라는 것에 회의적입니다. 확실합니까? 좋은 간단하고 부분적인 응용 프로그램 구문에서는 그렇진 않습니다. – Kaz