누군가가 이미이 질문을했지만 스레드가 원래 질문에 답변하지 못하게되었습니다.템플릿이있는 연산자() 오버로드 C++
template<size_t i, class f_type>
void call_with_i(f_type f);
functor_type 중 하나입니다 :
이이 있다고 가정가) 다음과 같은 서명이있는 방법으로 구조체 :
template<size_t i> operator()() const;
또는, B) 다음과 같은 함수 :
template<size_t i> foo();
나는 "call_with_i < 42> (푸)" "foo는 < 42>()"에 해당되고 싶어요,하지만 난 그렇게 할 수있는 권리 구문을 알아낼 수 없습니다. 나는 단지 (a)
하지만 (a) + (b)는 훌륭한
이 될 해결책으로 가득 차있다. 당신이 명시 적 템플릿 인수 연산자()를 호출하려면 어떻게해야
f<i>(); // doesn't work
f()<i>; // doesn't work
f.operator<i>(); // doesn't work
f.operator()<i>; // doesn't work
f.operator()<i>(); // works on msvc, but doesn't work on gcc.
: 나는 이미 이러한 구문을 시도했습니다?
동일한 문법이 템플리트 화 된 자유 함수를 호출하는 방식으로 호출 할 수 있습니까?
p.s. 내가 이것을 위해 무엇을 사용하고 있는지 궁금하다면, repeat_to 함수를 작성했기 때문에 repeat_to < 10> (f)는 f (0), f (1) ... f (10)을 호출합니다. 나는 여러 부스트 :: 융합 벡터를 반복하여 인덱스로 병렬로 이걸 사용하고있다. 예, 반복자를 사용할 수도 있고, 명명 된 멤버 함수를 사용할 수도 있지만 여전히 대답을 알고 싶습니다.
편집 참고 사항 : 템플릿으로 처리 된 자유 함수를 arg로 전달하는 것은 의미가 없기 때문에 나는 물건을 뜯어 냈습니다.
당신이 할 수 없기 때문에 대답하지 못했습니다. – GManNickG