Boost.Null

  • 大昔にボツになったと思われるものがSandboxにある
  • しかしまた消えていた


[]#include[][] <boost/config.hpp>[]

[]namespace[] []poost[] {

[]#if[][] !defined(BOOST_NO_MEMBER_TEMPLATES)[]

[]namespace[] []detail[] {

[]struct[] []null_type[]


{
[]// Will disable some warnings about a class with all ctors[]
[]// private and no firends[]
[]friend[] []class[] []poost_null_dummy_class[];

[]template[]< []class[] []AnyT[] >
[]operator[] []AnyT[]* () []const[] { []return[] 0; }

[]template[]< []class[] []AnyT[], []class[] []MemT[] >
[]operator[] []MemT[] []AnyT[]::* () []const[] { []return[] 0; }

[]private[]:
[]null_type[]();
[]null_type[]([]null_type[] []const[]&);
[]void[] []operator[]=([]null_type[] []const[]&);
[]void[] []operator[]&() []const[];
};

} []// namespace detail[]

[]namespace[] {

[]// Workaround: static is still required for broken stdafx.cpp[]
[]// Null reference ? Can't call null_type::null_type(), so ...[]
[]static[] []detail[]::[]null_type[] []const[]& []null[] = *([]detail[]::[]null_type[]*)0;

} []// namespace poost::anonymous[]

[]#else[]

[]namespace[] {

[]static[] []int[] []const[] []null[] = 0;

} []// namespace poost::anonymous[]

[]#endif[][] [][]// !defined(BOOST_NO_MEMBER_TEMPLATES)[]

} []// namespace poost[]