GithubHelp home page GithubHelp logo

Comments (5)

akinomyoga avatar akinomyoga commented on June 25, 2024

この文脈では undefined behavior で良いように思います。unsequenced な二つの式の評価が問題になるのは、一方の副作用が他方に影響を与えるときでしたが、このとき undefined behavior [intro.execution]/17 になります。

むしろ、実引数の評価順序が「未規定」という方に語弊があるかもしれません。一つの関数呼び出しにおける「実引数同士」の評価については特に記述がないので unsequenced (混ぜて実行できる) と思われる [intro.execution]/18, [expr.call]/5, [intro.execution]/17 のですが、未規定と書くと indeterminately sequenced (順序づけはあるが未規定 [intro.execution]/15) とも取れます (unsequenced が別の種類の unspecified であるとは規格中に明記はありません)。とは書きつつ、この書籍では深いところには立ち入らずに初心者でも分かるように書くという趣旨がありますので、かように細かいことを気にしても仕方がないかもしれませんが。

すみません。撤回します。[expr.call]/5 に indeterminately sequenced と書かれていますね。従って、未規定です。

from cpp17book.

akinomyoga avatar akinomyoga commented on June 25, 2024

a.*b 抜け?

ところで、ここの箇所で挙げられている新しく順序付けられた式に a.*b [expr.mptr.oper]/4 が抜けていませんか?

a.b, a->b の評価順序とは?

あと、純粋に疑問なのですが: a.b および a->b が列挙されていますが、b はメンバ名になるので評価も何もない気がします…。さらに規格の対応する部分 [expr.ref] も探してみましたが sequenced 云々について見つけられませんでした (探し方が甘いだけかもしれませんが)。むしろ「演算子の左側の式が評価される」[expr.ref]/1と書かれています。

from cpp17book.

nekketsuuu avatar nekketsuuu commented on June 25, 2024

@akinomyoga (「未定義の挙動」について) なるほど、確かにそうですね。ご教示ありがとうございます。

from cpp17book.

nekketsuuu avatar nekketsuuu commented on June 25, 2024

あ、すいません、a, b, c, d の問題はまだ解決していませんでした。reopen します。

from cpp17book.

akinomyoga avatar akinomyoga commented on June 25, 2024

Fixed by 4437751

from cpp17book.

Related Issues (16)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.