@@ -91,15 +91,39 @@ void checkOffset(const OWNER_TYPE&, size_t, size_t)
91
91
92
92
// call the initContext method properly on packed array traits
93
93
template <typename PACKED_ARRAY_TRAITS, typename OWNER_TYPE, typename PACKING_CONTEXT,
94
- typename std::enable_if<has_owner_type<PACKED_ARRAY_TRAITS>::value, int >::type = 0 >
94
+ typename std::enable_if<has_owner_type<PACKED_ARRAY_TRAITS>::value &&
95
+ !std::is_scalar<typename PACKED_ARRAY_TRAITS::ElementType>::value,
96
+ int >::type = 0 >
97
+ void packedArrayTraitsInitContext (const OWNER_TYPE& owner, PACKING_CONTEXT& context,
98
+ const typename PACKED_ARRAY_TRAITS::ElementType& element)
99
+ {
100
+ PACKED_ARRAY_TRAITS::initContext (owner, context, element);
101
+ }
102
+
103
+ template <typename PACKED_ARRAY_TRAITS, typename OWNER_TYPE, typename PACKING_CONTEXT,
104
+ typename std::enable_if<has_owner_type<PACKED_ARRAY_TRAITS>::value &&
105
+ std::is_scalar<typename PACKED_ARRAY_TRAITS::ElementType>::value,
106
+ int >::type = 0 >
95
107
void packedArrayTraitsInitContext (
96
108
const OWNER_TYPE& owner, PACKING_CONTEXT& context, typename PACKED_ARRAY_TRAITS::ElementType element)
97
109
{
98
110
PACKED_ARRAY_TRAITS::initContext (owner, context, element);
99
111
}
100
112
101
113
template <typename PACKED_ARRAY_TRAITS, typename OWNER_TYPE, typename PACKING_CONTEXT,
102
- typename std::enable_if<!has_owner_type<PACKED_ARRAY_TRAITS>::value, int >::type = 0 >
114
+ typename std::enable_if<!has_owner_type<PACKED_ARRAY_TRAITS>::value &&
115
+ !std::is_scalar<typename PACKED_ARRAY_TRAITS::ElementType>::value,
116
+ int >::type = 0 >
117
+ void packedArrayTraitsInitContext (
118
+ const OWNER_TYPE&, PACKING_CONTEXT& context, const typename PACKED_ARRAY_TRAITS::ElementType& element)
119
+ {
120
+ PACKED_ARRAY_TRAITS::initContext (context, element);
121
+ }
122
+
123
+ template <typename PACKED_ARRAY_TRAITS, typename OWNER_TYPE, typename PACKING_CONTEXT,
124
+ typename std::enable_if<!has_owner_type<PACKED_ARRAY_TRAITS>::value &&
125
+ std::is_scalar<typename PACKED_ARRAY_TRAITS::ElementType>::value,
126
+ int >::type = 0 >
103
127
void packedArrayTraitsInitContext (
104
128
const OWNER_TYPE&, PACKING_CONTEXT& context, typename PACKED_ARRAY_TRAITS::ElementType element)
105
129
{
0 commit comments