mercredi 10 juillet 2019

Are there sequence points in member initial list? [duplicate]

This question already has an answer here:

I have a constructor as below:

Foo::Foo(std::unique_ptr<Bar> bar)
    : left(bar->getLeft()),
      right(bar->getRight()),
      mBar(std::move(bar)) {}

And the program crashed due to bar in left(bar->getLeft()) is nullptr. If I use left(mBar->getLeft()), it works fine.

So I wondered if there's any sequence point in member initial list? If not, how to know for sure if the move statement happened or not? In another word: in this case, when to use argument and when to use member?

Aucun commentaire:

Enregistrer un commentaire