40#ifndef PMEMOBJ_SPECIALIZATION_HPP
41#define PMEMOBJ_SPECIALIZATION_HPP
58struct sp_element<T[]> {
62template <
typename T, std::
size_t N>
63struct sp_element<T[N]> {
70struct sp_dereference {
75struct sp_dereference<void> {
80struct sp_dereference<void const> {
85struct sp_dereference<void volatile> {
90struct sp_dereference<void const volatile> {
95struct sp_dereference<T[]> {
99template <
typename T, std::
size_t N>
100struct sp_dereference<T[N]> {
107struct sp_member_access {
112struct sp_member_access<T[]> {
116template <
typename T, std::
size_t N>
117struct sp_member_access<T[N]> {
124struct sp_array_access {
129struct sp_array_access<void> {
130 typedef struct does_not_exist {
135struct sp_array_access<T[]> {
139template <
typename T, std::
size_t N>
140struct sp_array_access<T[N]> {
148 enum _vt { value = 0 };
151template <
typename T, std::
size_t N>
152struct sp_extent<T[N]> {
153 enum _vt { value = N };