@@ -292,20 +292,20 @@ struct interface<S, F, Flag::soa> { using type = wrapper<S, F>; };
292292
293293#define MEMLAYOUT_APPLY_UNARY (...)\
294294 template <class Function >\
295- constexpr auto apply (Function&& f) { return f (__VA_ARGS__); }\
295+ __attribute__ ((flatten)) constexpr auto apply(Function&& f) { return f (__VA_ARGS__); }\
296296 template <class Function >\
297- constexpr auto apply (Function&& f) const { return f (__VA_ARGS__); }\
297+ __attribute__ ((flatten)) constexpr auto apply(Function&& f) const { return f (__VA_ARGS__); }\
298298
299299#define MEMLAYOUT_EXPAND (m ) f(m, other.m)
300300
301301#define MEMLAYOUT_APPLY_BINARY (STRUCT_NAME , ...)\
302302 template <template <class > class F_other , class Function >\
303- constexpr STRUCT_NAME apply (STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
303+ __attribute__ ((flatten)) constexpr STRUCT_NAME apply(STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
304304 template <template <class > class F_other , class Function >\
305- constexpr STRUCT_NAME apply (STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
305+ __attribute__ ((flatten)) constexpr STRUCT_NAME apply(STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
306306 template <template <class > class F_other , class Function >\
307- constexpr STRUCT_NAME apply (const STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
307+ __attribute__ ((flatten)) constexpr STRUCT_NAME apply(const STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
308308 template <template <class > class F_other , class Function >\
309- constexpr STRUCT_NAME apply (const STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
309+ __attribute__ ((flatten)) constexpr STRUCT_NAME apply(const STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
310310
311311#endif // MEMLAYOUT_H
0 commit comments