ホームページ >バックエンド開発 >C++ >「auto」変数に割り当てると Spirit V2 パーサーがクラッシュするのはなぜですか?

「auto」変数に割り当てると Spirit V2 パーサーがクラッシュするのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 11:11:10323ブラウズ

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

自動変数へのパーサーの割り当て: Spirit V2 の隠れた弱点

Spirit V2 のスピリット パーサーは、auto キーワードと一緒に使用することを目的としていません。パーサーを 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.

注: この制限は、より最新の機能を持つ Boost Spirit X3 には存在しません。建築。

以上が「auto」変数に割り当てると Spirit V2 パーサーがクラッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。