@@ -21,56 +21,56 @@ template <class SF>
2121struct RandomAccessAt {
2222 MemLayout::size_t i;
2323 template <class ... Args>
24- [[gnu::always_inline]] constexpr SF operator ()(Args& ...args) const { return {args[i]...}; }
24+ constexpr SF operator ()(Args& ...args) const { return {args[i]...}; }
2525 template <class ... Args>
26- [[gnu::always_inline]] constexpr SF operator ()(const Args& ...args) const { return {args[i]...}; }
26+ constexpr SF operator ()(const Args& ...args) const { return {args[i]...}; }
2727};
2828
2929template <class SF >
3030struct GetPointer {
3131 template <class ... Args>
32- [[gnu::always_inline]] constexpr SF operator ()(Args& ...args) const { return {&args...}; }
32+ constexpr SF operator ()(Args& ...args) const { return {&args...}; }
3333 template <class ... Args>
34- [[gnu::always_inline]] constexpr SF operator ()(const Args& ...args) const { return {&args...}; }
34+ constexpr SF operator ()(const Args& ...args) const { return {&args...}; }
3535};
3636
3737template <class SF >
3838struct AggregateConstructor {
3939 template <class ... Args>
40- [[gnu::always_inline]] constexpr SF operator ()(Args& ...args) const { return {args...}; }
40+ constexpr SF operator ()(Args& ...args) const { return {args...}; }
4141 template <class ... Args>
42- [[gnu::always_inline]] constexpr SF operator ()(const Args& ...args) const { return {args...}; }
42+ constexpr SF operator ()(const Args& ...args) const { return {args...}; }
4343};
4444
4545struct FirstMember {
4646 template <class T , class ... Args>
47- [[gnu::always_inline]] constexpr T& operator ()(T& t, Args& ...args) const { return t; }
47+ constexpr T& operator ()(T& t, Args& ...args) const { return t; }
4848 template <class T , class ... Args>
49- [[gnu::always_inline]] constexpr const T& operator ()(const T& t, const Args& ...args) const { return t; }
49+ constexpr const T& operator ()(const T& t, const Args& ...args) const { return t; }
5050};
5151
5252template <class SF >
5353struct PreIncrement {
5454 template <class ... Args>
55- [[gnu::always_inline]] constexpr SF operator ()(Args& ...args) const { return {++args...}; }
55+ constexpr SF operator ()(Args& ...args) const { return {++args...}; }
5656};
5757
5858template <class SF >
5959struct PreDecrement {
6060 template <class ... Args>
61- [[gnu::always_inline]] constexpr SF operator ()(Args& ...args) const { return {--args...}; }
61+ constexpr SF operator ()(Args& ...args) const { return {--args...}; }
6262};
6363
6464template <class SF >
6565struct Advance {
6666 ptrdiff_t i;
6767 template <class ... Args>
68- [[gnu::always_inline]] constexpr SF operator ()(const Args& ...args) const { return {(args + i)...}; }
68+ constexpr SF operator ()(const Args& ...args) const { return {(args + i)...}; }
6969};
7070
7171struct CopyAssignment {
7272 template <class Left , class Right >
73- [[gnu::always_inline]] constexpr Left& operator ()(Left& left, const Right& right) const { return left = right; }
73+ constexpr Left& operator ()(Left& left, const Right& right) const { return left = right; }
7474};
7575
7676template <
@@ -87,11 +87,11 @@ struct wrapper : public S<F> {
8787 template <template <class > class F_other >
8888 constexpr wrapper (const S<F_other>& other) : Base{other.apply (AggregateConstructor<Base>{})} {}
8989
90- [[gnu::always_inline]] constexpr wrapper<S, reference> operator [] (size_t i) { return Base::apply (RandomAccessAt<S<reference>>{i}); }
91- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
90+ constexpr wrapper<S, reference> operator [] (size_t i) { return Base::apply (RandomAccessAt<S<reference>>{i}); }
91+ constexpr wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
9292
93- [[gnu::always_inline]] constexpr wrapper<S, reference> operator *() { return operator [](0 ); }
94- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator *(ptrdiff_t ) const { return operator [](0 ); }
93+ constexpr wrapper<S, reference> operator *() { return operator [](0 ); }
94+ constexpr wrapper<S, const_reference> operator *(ptrdiff_t ) const { return operator [](0 ); }
9595};
9696
9797template <template <template <class > class > class S >
@@ -226,13 +226,13 @@ struct wrapper<S, pointer> : public S<pointer> {
226226 constexpr wrapper () = default;
227227 constexpr wrapper (Base b) : Base{static_cast <Base&&>(b)} {}
228228
229- [[gnu::always_inline]] constexpr wrapper<S, reference> operator [] (size_t i) { return Base::apply (RandomAccessAt<S<reference>>{i}); }
230- [[gnu::always_inline]] constexpr const wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
229+ constexpr wrapper<S, reference> operator [] (size_t i) { return Base::apply (RandomAccessAt<S<reference>>{i}); }
230+ constexpr const wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
231231
232- [[gnu::always_inline]] constexpr wrapper<S, reference> operator *() { return operator [](0 ); }
233- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator *() const { return operator [](0 ); }
234- [[gnu::always_inline]] constexpr wrapper<S, reference> operator ->() { return operator [](0 ); }
235- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator ->() const { return operator [](0 ); }
232+ constexpr wrapper<S, reference> operator *() { return operator [](0 ); }
233+ constexpr wrapper<S, const_reference> operator *() const { return operator [](0 ); }
234+ constexpr wrapper<S, reference> operator ->() { return operator [](0 ); }
235+ constexpr wrapper<S, const_reference> operator ->() const { return operator [](0 ); }
236236
237237 constexpr bool operator ==(const wrapper& other) const { return Base::apply (FirstMember{}) == other.apply (FirstMember{}); }
238238 constexpr bool operator !=(const wrapper& other) const { return !this ->operator ==(other); }
@@ -259,9 +259,9 @@ struct wrapper<S, const_pointer> : public S<const_pointer> {
259259 constexpr wrapper (Base b) : Base{static_cast <Base&&>(b)} {}
260260 constexpr wrapper (const S<pointer>& other) : Base(other.apply(AggregateConstructor<Base>{})) {}
261261
262- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
263- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator *() const { return operator [](0 ); }
264- [[gnu::always_inline]] constexpr wrapper<S, const_reference> operator ->() const { return operator [](0 ); }
262+ constexpr wrapper<S, const_reference> operator [] (size_t i) const { return Base::apply (RandomAccessAt<S<const_reference>>{i}); }
263+ constexpr wrapper<S, const_reference> operator *() const { return operator [](0 ); }
264+ constexpr wrapper<S, const_reference> operator ->() const { return operator [](0 ); }
265265
266266 constexpr bool operator ==(const wrapper& other) const { return Base::apply (FirstMember{}) == other.apply (FirstMember{}); }
267267 constexpr bool operator !=(const wrapper& other) const { return !this ->operator ==(other); }
@@ -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- [[gnu::always_inline]] constexpr auto apply (Function&& f) { return f (__VA_ARGS__); }\
295+ constexpr auto apply (Function&& f) { return f (__VA_ARGS__); }\
296296 template <class Function >\
297- [[gnu::always_inline]] constexpr auto apply (Function&& f) const { return f (__VA_ARGS__); }\
297+ 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- [[gnu::always_inline]] constexpr STRUCT_NAME apply (STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
303+ constexpr STRUCT_NAME apply (STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
304304 template <template <class > class F_other , class Function >\
305- [[gnu::always_inline]] constexpr STRUCT_NAME apply (STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
305+ 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- [[gnu::always_inline]] constexpr STRUCT_NAME apply (const STRUCT_NAME <F_other>& other, Function&& f) { return {__VA_ARGS__}; }\
307+ 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- [[gnu::always_inline]] constexpr STRUCT_NAME apply (const STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
309+ constexpr STRUCT_NAME apply (const STRUCT_NAME <F_other>& other, Function&& f) const { return {__VA_ARGS__}; }\
310310
311311#endif // MEMLAYOUT_H
0 commit comments