managed_open_or_create_impl(open_only_t,
               const device_id_t & id,
               mode_t mode,
               const void *addr)
 {
    priv_open_or_create
       ( DoOpen
       , id
       , 0
       , mode
       , addr
       , permissions()
       , null_mapped_region_function());
 }
 managed_open_or_create_impl(open_only_t,
               const device_id_t & id,
               mode_t mode,
               const void *addr,
               const ConstructFunc &construct_func)
 {
    priv_open_or_create
       ( DoOpen
       , id
       , 0
       , mode
       , addr
       , permissions()
       , construct_func);
 }
 managed_open_or_create_impl(open_or_create_t,
               const device_id_t & id,
               std::size_t size,
               mode_t mode,
               const void *addr,
               const permissions &perm)
 {
    priv_open_or_create
       ( DoOpenOrCreate
       , id
       , size
       , mode
       , addr
       , perm
       , null_mapped_region_function());
 }
 managed_open_or_create_impl(open_or_create_t,
               const device_id_t & id,
               std::size_t size,
               mode_t mode,
               const void *addr,
               const ConstructFunc &construct_func,
               const permissions &perm)
 {
    priv_open_or_create
       ( DoOpenOrCreate
       , id
       , size
       , mode
       , addr
       , perm
       , construct_func);
 }
 managed_open_or_create_impl(create_only_t, 
               const device_id_t & id,
               std::size_t size,
               mode_t mode,
               const void *addr,
               const ConstructFunc &construct_func,
               const permissions &perm)
 {
    priv_open_or_create
       (ipcdetail::DoCreate
       , id
       , size
       , mode
       , addr
       , perm
       , construct_func);
 }