예, 제목이 아기를 놀라게 할 수는 있지만 실제로는 매우 간단합니다.다양성 매개 변수가있는 인수없는 템플릿 함수를 액세스하는 모호한 오버로드
I 즉, 전문 템플릿 함수에 함수 포인터를 저장하기 위해 노력하고 부스트 : 도시 된 바와 같이 (1.41 부스트) make_shared :
boost::shared_ptr<int> (*pt2Function)() = boost::make_shared<int>;
그러나,이 컴파일되지 않습니다 (GCC 4.4.1)에 의한 부스트 :: make_shared 컴파일러는 이러한 맥락에서 떨어져 말할 수있는 다음과 같은 두 가지 전문 분야를 가지고 있다는 사실에 :
template< class T > boost::shared_ptr<T> make_shared()
...
template< class T, class... Args > boost::shared_ptr<T> make_shared(Args && ... args)
오류, 참조 :
In function ‘int main()’:
error: converting overloaded function ‘make_shared’ to type ‘class boost::shared_ptr<int> (*)()’ is ambiguous
boost/smart_ptr/make_shared.hpp:100: error: candidates are: boost::shared_ptr<X> boost::make_shared() [with T = int]
boost/smart_ptr/make_shared.hpp:138: error: boost::shared_ptr<X> boost::make_shared(Args&& ...) [with T = int, Args = ]
변수가 아닌 유사 콘텐츠를 주석 처리하면 코드가 올바르게 컴파일됩니다.
아무도이 같은 두 개의 인수가없는 함수 사이의 모호성을 해결하기위한 적절한 구문을 알고 있습니까?
어떤 정확한 부스트 버전을 사용하고 있습니까? –
부스트 버전 1.41. 질문에 추가했습니다. – porgarmingduod
좋아, 그동안 아무도 그렇게하지 않으면 나는 일 후에 티켓을 열어. –