2011-10-17 5 views
7

boost::regexstd::regex으로 바꾸는 것은 회사에서 gcc 4.6을 사용했기 때문에 empty() 메서드로 문제가 발생했습니다. 기본적으로 boost::regex에서 std::regex 클래스로 변경되지 않았습니다. 이것이 gcc의 문제인지 아니면이 방법이 C++ 11 표준으로 만들지는 못했습니다. 그러나이 코드는이 기능에 크게 의존했습니다. 그래서 질문입니다 - C++ 11 std::regex에서 표현식이 설정되었는지 확인해야합니까? 아니면 평생 동안 boost::regex을 사용해야합니까?boost :: regex 대 std :: regex - empty() 메소드를 찾을 수 없습니까?

+0

그것은 11 ... – PlasmaHH

+0

@PlasmaHH C++로 밤은 : 정말? 나는 그것이라고 생각했다. http://en.wikipedia.org/wiki/C%2B%2B11#Regular_expressions 마침내 표준 마지막 순간 안으로 들어가지는 못했습니다 그래서 - 그것은 위키 피 디아뿐만 아니라 여기 언급, MSVC에? –

+1

@VladLazarenko N3290을보고 있는데 찾을 수 없습니다. – pmr

답변

10

empty()은 오래 전에 std::regex에서 제거되었다. N1507 (2003-09-16)은 제거 제안 ("유효하지 않은/비어있는 정규 표현식은 무엇입니까?")을 제안하는 원본 종이였습니다. 이 문제는 당시 std::tr1:regex이었습니다. 이 문제는 LWG tr1 issue 목록에 7.28 문제로 기록되었으며 다음과 같은 해결책이 포함되었습니다.

Kona에서 논의되었습니다. LWG는 기본 생성자가 이 빈 문자열에서 생성 된 것과 동일해야 함에 동의합니다. 우리가 그것을 표현하는 문구를 필요로 지금 부분적으로 있기 때문에이 열려 을 떠나, 부분적 이 theempty() 처음에 멤버 함수를 가진 어떤 지점이 있다고 분명하지 않다 때문이다.

N1711 (2004-11-04)은 basic_regex::empty()이 부족한 첫 번째 TR1 초안이었습니다. 거기에서 TR1에서 더 이상의 논의없이 C++ 11로 가져 왔습니다.