
2009/5/6 dariomt <dariomt@gmail.com>
Roman Perepelitsa <roman.perepelitsa <at> gmail.com> writes:
2009/5/6 Roman Perepelitsa <roman.perepelitsa <at> gmail.com> It's less efficient, because all arguments will be copied. It's also more
typing, longer compilation times and more code generated.
There is one more caveat. This approach does not work with polymorphic
types (you'll get slicing). I don't think there are any advantages in passing boost::optional<T> compared to const T*.Roman Perepelitsa.
Thanks for the answer!
Is there a way to avoid the copy (and thus the slicing)? Perhaps using boost::optional<T&> or boost::optional< boost::reference_wrapper<T> > ?
You can use boost::optional<T&>, but it's a rather strange beast and it acts a bit differently from normal optional values. Roman Perepelitsa.