2012-04-25 9 views
2

に私は、次のコードを持っている:このコードでブースト:: scoped_array ::取得()return文

std::string HtmlToText(std::string const& html) 
{ 
    boost::scoped_array<char> text(converter.toText(html.c_str())); 
    return text.get(); 
} 

私の関心は、オブジェクトtexttext.get()戻った後が、一時的なリターンの前に破壊されるだろうかどうかではなかったですオブジェクトstd::stringが構築されます。これは、その時点で破壊されるならば、問題になるでしょう。

関数スコープのreturn文と関連してオブジェクトを破棄する際の規則と仕様については、C++ 03の標準を検索しましたが、私は欲しいものを見つけることができませんでした。誰も私がそれを見つけるのを助けることができる?

答えて

3

C++ 03ドラフトのテキストは手元にありませんが、実際のtextオブジェクトが削除される前に、呼び出しから作成された一時的なものはすべて破棄されることを思い出しているようです(ブロック内の自動オブジェクトのLIFOスコープ)、これにより、この問題に遭遇することはありません。