boost-optional

When to use boost::optional and when to use std::unique_ptr in cases when you want to implement a function that can return “nothing”?

两盒软妹~` 提交于 2019-11-28 06:52:41
From what I understand there are 2* ways you can implement a function that sometimes doesnt return a result(for example is person found in a list of ppl). *- we ignore raw ptr version, pair with a bool flag, and exception when none found version. boost::optional<Person> findPersonInList(); or std::unique_ptr<Person> findPersonInList(); So are there any reasons to prefere one over the other? It depends: do you wish to return a handle or a copy . If you wish to return a handle : Person* boost::optional<Person&> are both acceptable choices. I tend to use a Ptr<Person> class which throws in case

When to use boost::optional and when to use std::unique_ptr in cases when you want to implement a function that can return “nothing”?

情到浓时终转凉″ 提交于 2019-11-27 01:33:01
问题 From what I understand there are 2* ways you can implement a function that sometimes doesnt return a result(for example is person found in a list of ppl). *- we ignore raw ptr version, pair with a bool flag, and exception when none found version. boost::optional<Person> findPersonInList(); or std::unique_ptr<Person> findPersonInList(); So are there any reasons to prefere one over the other? 回答1: It depends: do you wish to return a handle or a copy . If you wish to return a handle : Person*