タグ

ブックマーク / blogs.wankuma.com (1)

  • [C++]なぜ std::stack の pop() は void なのか

    std::stack<> を使うたびにいつも思うのですが、何で pop() の戻り値は void になっているのでしょうか? このせいでわざわざ top() で先頭の値を持ってきて一時変数に確保した後 pop() を実行する必要があります。 std::stack<int> st; st.push(10); // int n = st.pop(); // こうやって書くことが出来ない int n = st.top(); st.pop(); これについてずっと不満を覚えていたのですが、最近 Exceptional C++ を読んで、なぜ void になっているのか、というのを知りました。 pop() が void になっている理由は、例外安全を保証するためだそうです。 例えば T を返す pop() メソッドの実装は、次のように書くことが出来ます。 T pop() { assert(size_

  • 1