>백엔드 개발 >C++ >'auto' 변수에 할당하면 Spirit V2 파서가 충돌하는 이유는 무엇입니까?

'auto' 변수에 할당하면 Spirit V2 파서가 충돌하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-21 11:11:10301검색

Why Do Spirit V2 Parsers Crash When Assigned to `auto` Variables?

자동 변수에 파서 할당: Spirit V2의 숨겨진 약점

Spirit V2의 Spirit 파서는 auto 키워드와 함께 사용하기 위한 것이 아닙니다. 자동 변수에 파서를 할당하려고 하면 분할 오류로 인해 프로그램이 충돌할 수 있습니다.

이 문제는 Spirit의 기본 Proto 표현식 템플릿이 임시에 대한 참조를 보유하기 때문에 발생합니다. 이 제한 사항을 해결하려면 다음 방법을 사용할 수 있습니다.

  • qi::copy(): Boost V2 트렁크에서 사용할 수 있지만 아직 출시되지 않았습니다. 파서를 복사하여 새 객체를 생성합니다.
  • boost::proto::deep_copy: 파서의 전체 복사를 수행하여 임시 항목에 대한 참조를 확인합니다.
  • BOOST_SPIRIT_AUTO: 다음과 같이 정의된 매크로 Boost::proto::wrap().

자세한 내용은 https://stackoverflow.com/search?q=user:85371 deep_copy에서 StackOverflow 토론을 참조하세요.

참고: 보다 현대적인 아키텍처를 갖춘 Boost Spirit X3에는 이러한 제한이 없습니다.

위 내용은 'auto' 변수에 할당하면 Spirit V2 파서가 충돌하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.