2009/5/6 Roman Perepelitsa <roman.perepelitsa@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.