저는 항상 STL 알고리즘에 대한 술어로 로컬 정의 클래스를 사용할 수없는 이유가 궁금합니다. 질문에 STL 알고리즘에서 로컬 클래스 사용
: Approaching STL algorithms, lambda, local classes and other approaches, BubbaT 언급은 ' 은 C++ 표준의 인수에 사용하기 위해 지역 유형을 금지하기 때문에'라고 말한다예제 코드 :
int main() {
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
std::vector<int> v(array, array+10);
struct even : public std::unary_function<int,bool>
{
bool operator()(int x) { return !(x % 2); }
};
std::remove_if(v.begin(), v.end(), even()); // error
}
사람이 어디에서 알고 있나요 표준은 제한 사항입니까? 지역 유형을 허용하지 않는 이유는 무엇입니까?
편집 : C++ 11, 템플릿 인자로 로컬 타입을 사용하는 것이 합법적이기 때문에.
나는 알고있다. 그러나 나는 왜 내가 이해할 수 있는지 알기를 원한다. 표준에 대한 언급이 있습니까? –
14.3.1.2, "템플릿 유형 인수"를 언급하고 있습니까? – greyfade
몇 가지 정보와 도움이 될만한 링크를 추가했습니다. 요약하면 표준이 빠르게 발전하는 경우 신속하게 수정 된 실수였습니다 ... – Klaim