C++에서 전역 함수에 로컬 함수 또는 펑터를 전달하는 것이 완전히 불가능합니까? 모든 신호가 "아니오"를 가리키는 것처럼 보입니다. 그런로컬 함수를 전역 함수에 대한 매개 변수로 전달
template<class integrand>
void integrate(integrand f) {
...
f();
...
}
int main() {
struct twofer {
int operator()(int i) const { return 2*i; }
};
integrate(twofer());
}
또는 무언가 : 그것은 통합과 같은 간단한 수학 기능 구현을 해결하는 가장 간단한 방법처럼 보인다. 템플릿에 로컬 객체를 전달할 수 없기 때문에이 작업은 실패합니다. 나는 새로운 표준이 람다 함수가 여기에서 사용되도록 허용한다는 것을 알고 있지만, 나는 지금 새로운 표준을 사용할 수 없다. 나는이 함수가 지역 코드로 선언되기를 바란다. 왜냐하면 이것은 물건을 읽을 수있게 만든다고 생각하기 때문이다. 나는 클래스 나 구조체에 integerble 함수로 가득 찬 두 개를 넣을 수는 있지만, 가독성을 파괴한다고 생각합니다. 대안이 있습니까?
나는 익명 함수는 C++ 11에서 지원하고 있기 때문에 당신이 "정상적인 기능"을 구축해야 할 것이다 두려워 http://en.wikipedia.org/wiki/Anonymous_function # C.2B.2B – Vyktor
로컬 형식을 템플릿 매개 변수로 사용 * * 또한 C++ 11에서 작동합니다. 구조체를 메인 외부의 익명 네임 스페이스에 넣는 것을 제외하면 구형 표준에 대한 실질적인 해결 방법은 없습니다. –