I'm trying to understand when is the right time to use some of the structures that come with boost
and had a question regarding the use of boost::optional
with a reference.
Suppose I have the following class, using boost::optional
:
class MyClass {
public:
MyClass() {}
initialise(Helper& helper) {
this->helper = helper;
}
boost::optional<Helper&> getHelper() {
return helper;
}
private:
boost::optional<Helper&> helper;
}
Why would I use the above instead of:
class MyClass {
public:
MyClass() : helper(nullptr) {}
initialise(Helper& helper) {
this->helper = &helper;
}
Helper* getHelper() {
return helper;
}
private:
Helper* helper;
}
They both convey the same intent, i.e. that getHelper
could return null
, and the caller still needs to test if a helper was returned.
Should you only be using boost::optional
if you need to know the difference between 'a value', nullptr
and 'not a value'?