컴파일 실패 문의 드립니다.

  • kwangswei
    kwangswei

    안녕하세요.

    WILDCARD 문제를 푸는데 컴파일 실패가 납니다.
    어떻게 해결할 수 있는지 조언 부탁 드립니다.

    컴파일 실패 페이지 바로가기

    개발 환경 : gcc 4.6.2

    ideone.com 의 C++ (gcc-4.3.4) 에서 돌려도 제대로 돌아가고 결과도 맞게 나오고 있습니다. ( http://ideone.com/Yw8gpQ )

    검토 부탁 드립니다.

    에러 메시지 :
    submission.cpp: In function ‘int IsMatched(std::string, std::string)’:
    submission.cpp:19:61: error: no matching function for call to ‘make_pair(std::string&, std::string&)’
    submission.cpp:19:61: note: candidate is:
    /usr/include/c++/4.6/bits/stl_pair.h:262:5: note: template std::pair::__type, typename std::__decay_and_strip<_T2>::__type> std::make_pair(_T1&&, _T2&&)

    소스에서 문제가 되는 부분 ( line 19 )
    int& ret = cache[make_pair(pattern, input)];


    11년 전
5개의 댓글이 있습니다.
  • Being
    Being

    알고스팟에서는 C++0x/C++11 플래그를 켜고 컴파일합니다. ideone.com에[서도 c++0x로 컴파일하니 똑같은 에러가 나네요. 이런 문제가 생기는 이유에 대해서는 다음 분께서...=3=3


    11년 전 link
  • Corea
    Corea

    다음 링크를 참조하세요 : http://stackoverflow.com/questions/3559344/error-no-matching-function-for-call-to-make-pairint-quest
    일단 19번째 Line을 다음과 같이 고치면 정상적으로 컴파일 되는 것 같습니다 :)
    int& ret = cache[make_pair(string(pattern), string(input))];


    11년 전 link
  • Corea
    Corea

    가장 간단한 해결책은 19번쨰 Line을 다음과 같이 고치는 것입니다.
    int& ret = cache[make_pair(pattern, input)];


    11년 전 link
  • kwangswei
    kwangswei

    두 분 답변 감사드립니다.
    우선 구글링을 통해 pair(pattern, input) 으로 바꿔서 컴파일은 성공시켰으나 왜 문제가 되었는지는 좀더 찾아봐야겠네요.

    감사합니다!


    11년 전 link
  • JongMan
    JongMan

    일단 make_pair함수는 pair<string, string>처럼 인자의 타입을 직접 쓰지 않기 위해 추가된 유틸리티 함수입니다. 따라서 make_pair<...> 식으로 타입을 직접 써주는 것은 pair를 쓰는 것보다 나을 게 없지요. ^^;

    make_pair가 새 C++에서 동작하지 않는 이유는 이 글에 적당히 설명되어 있는 것 같군요. 하여간 C++11은 골치아픕니다...


    11년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.