|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-08-07 10:20:37
Sascha Krissler <boost-dev_at_[hidden]> writes:
>
> Another solution would be to make a detail::generic_optional with all
> the operator foo and let optional inherit from it.
> That would be infinitesimal backward-incompatible ;)
I would use a simple metafunction to transform a type T into a type
with a null value:
template <class T>
struct nullable
{
typedef boost::optional<T> type;
};
template <class T>
struct nullable<T*>
{
typedef T* type;
};
// other specializations for types with built-in NULL values
This way you're really not incurring any overhead for types that are
already nullable. Use free functions to smooth out any messy
interface differences due to the optional<T> wrapper on some types.
HTH,
Dave
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk