@@ -4089,15 +4089,17 @@ template <typename T>
40894089#endif /* (TROMPELOEIL_CPLUSPLUS > 201103L) */
40904090
40914091
4092- #define TROMPELOEIL_WITH (...) TROMPELOEIL_WITH_(=,#__VA_ARGS__, __VA_ARGS__)
4093- #define TROMPELOEIL_LR_WITH (...) TROMPELOEIL_WITH_(&,#__VA_ARGS__, __VA_ARGS__)
4092+ #define TROMPELOEIL_WITH (...) TROMPELOEIL_WITH_((=),#__VA_ARGS__, __VA_ARGS__)
4093+ #define TROMPELOEIL_LR_WITH (...) TROMPELOEIL_WITH_((&),#__VA_ARGS__, __VA_ARGS__)
4094+ #define TROMPELOEIL_MEM_WITH (...) TROMPELOEIL_WITH_((&,this ),#__VA_ARGS__, __VA_ARGS__)
40944095
40954096
40964097#if (TROMPELOEIL_CPLUSPLUS != 201103L)
40974098
40984099#define TROMPELOEIL_WITH_ (capture, arg_s, ...) \
4099- template action<trompeloeil::with>(arg_s, \
4100- [capture](auto const & trompeloeil_x) { \
4100+ template action<trompeloeil::with>( \
4101+ arg_s, \
4102+ [TROMPELOEIL_IDENTITY capture](auto const & trompeloeil_x) { \
41014103 auto && _1 = ::trompeloeil::mkarg<1 >(trompeloeil_x); \
41024104 auto && _2 = ::trompeloeil::mkarg<2 >(trompeloeil_x); \
41034105 auto && _3 = ::trompeloeil::mkarg<3 >(trompeloeil_x); \
@@ -4120,14 +4122,16 @@ template <typename T>
41204122#endif /* !(TROMPELOEIL_CPLUSPLUS != 201103L) */
41214123
41224124
4123- #define TROMPELOEIL_SIDE_EFFECT (...) TROMPELOEIL_SIDE_EFFECT_(=, __VA_ARGS__)
4124- #define TROMPELOEIL_LR_SIDE_EFFECT (...) TROMPELOEIL_SIDE_EFFECT_(&, __VA_ARGS__)
4125+ #define TROMPELOEIL_SIDE_EFFECT (...) TROMPELOEIL_SIDE_EFFECT_((=), __VA_ARGS__)
4126+ #define TROMPELOEIL_LR_SIDE_EFFECT (...) TROMPELOEIL_SIDE_EFFECT_((&), __VA_ARGS__)
4127+ #define TROMPELOEIL_MEM_SIDE_EFFECT (...) TROMPELOEIL_SIDE_EFFECT_((&,this ), __VA_ARGS__)
41254128
41264129
41274130#if (TROMPELOEIL_CPLUSPLUS != 201103L)
41284131
41294132#define TROMPELOEIL_SIDE_EFFECT_ (capture, ...) \
4130- template action<trompeloeil::sideeffect>([capture](auto & trompeloeil_x) { \
4133+ template action<trompeloeil::sideeffect>( \
4134+ [TROMPELOEIL_IDENTITY capture](auto & trompeloeil_x) { \
41314135 auto && _1 = ::trompeloeil::mkarg<1 >(trompeloeil_x); \
41324136 auto && _2 = ::trompeloeil::mkarg<2 >(trompeloeil_x); \
41334137 auto && _3 = ::trompeloeil::mkarg<3 >(trompeloeil_x); \
@@ -4150,15 +4154,16 @@ template <typename T>
41504154#endif /* !(TROMPELOEIL_CPLUSPLUS == 201103L) */
41514155
41524156
4153- #define TROMPELOEIL_RETURN (...) TROMPELOEIL_RETURN_(=, __VA_ARGS__)
4154- #define TROMPELOEIL_LR_RETURN (...) TROMPELOEIL_RETURN_(&, __VA_ARGS__)
4157+ #define TROMPELOEIL_RETURN (...) TROMPELOEIL_RETURN_((=), __VA_ARGS__)
4158+ #define TROMPELOEIL_LR_RETURN (...) TROMPELOEIL_RETURN_((&), __VA_ARGS__)
4159+ #define TROMPELOEIL_MEM_RETURN (...) TROMPELOEIL_RETURN_((&,this ), __VA_ARGS__)
41554160
41564161
41574162#if (TROMPELOEIL_CPLUSPLUS != 201103L)
41584163
41594164#define TROMPELOEIL_RETURN_ (capture, ...) \
4160- template action<trompeloeil::handle_return>([capture]( auto & trompeloeil_x) \
4161- -> decltype (auto ) { \
4165+ template action<trompeloeil::handle_return>( \
4166+ [TROMPELOEIL_IDENTITY capture]( auto & trompeloeil_x) -> decltype (auto ) { \
41624167 auto && _1 = ::trompeloeil::mkarg<1 >(trompeloeil_x); \
41634168 auto && _2 = ::trompeloeil::mkarg<2 >(trompeloeil_x); \
41644169 auto && _3 = ::trompeloeil::mkarg<3 >(trompeloeil_x); \
@@ -4181,14 +4186,16 @@ template <typename T>
41814186#endif /* !(TROMPELOEIL_CPLUSPLUS != 201103L) */
41824187
41834188
4184- #define TROMPELOEIL_THROW (...) TROMPELOEIL_THROW_(=, __VA_ARGS__)
4185- #define TROMPELOEIL_LR_THROW (...) TROMPELOEIL_THROW_(&, __VA_ARGS__)
4189+ #define TROMPELOEIL_THROW (...) TROMPELOEIL_THROW_((=), __VA_ARGS__)
4190+ #define TROMPELOEIL_LR_THROW (...) TROMPELOEIL_THROW_((&), __VA_ARGS__)
4191+ #define TROMPELOEIL_MEM_THROW (...) TROMPELOEIL_THROW_((&,this ), __VA_ARGS__)
41864192
41874193
41884194#if (TROMPELOEIL_CPLUSPLUS != 201103L)
41894195
41904196#define TROMPELOEIL_THROW_ (capture, ...) \
4191- template action<trompeloeil::handle_throw>([capture](auto & trompeloeil_x) { \
4197+ template action<trompeloeil::handle_throw>( \
4198+ [TROMPELOEIL_IDENTITY capture](auto & trompeloeil_x) { \
41924199 auto && _1 = ::trompeloeil::mkarg<1 >(trompeloeil_x); \
41934200 auto && _2 = ::trompeloeil::mkarg<2 >(trompeloeil_x); \
41944201 auto && _3 = ::trompeloeil::mkarg<3 >(trompeloeil_x); \
@@ -4345,12 +4352,16 @@ template <typename T>
43454352
43464353#define WITH TROMPELOEIL_WITH
43474354#define LR_WITH TROMPELOEIL_LR_WITH
4355+ #define MEM_WITH TROMPELOEIL_MEM_WITH
43484356#define SIDE_EFFECT TROMPELOEIL_SIDE_EFFECT
43494357#define LR_SIDE_EFFECT TROMPELOEIL_LR_SIDE_EFFECT
4358+ #define MEM_SIDE_EFFECT TROMPELOEIL_MEM_SIDE_EFFECT
43504359#define RETURN TROMPELOEIL_RETURN
43514360#define LR_RETURN TROMPELOEIL_LR_RETURN
4361+ #define MEM_RETURN TROMPELOEIL_MEM_RETURN
43524362#define THROW TROMPELOEIL_THROW
43534363#define LR_THROW TROMPELOEIL_LR_THROW
4364+ #define MEM_THROW TROMPELOEIL_MEM_THROW
43544365#define TIMES TROMPELOEIL_TIMES
43554366#define RT_TIMES TROMPELOEIL_RT_TIMES
43564367#define AT_LEAST TROMPELOEIL_AT_LEAST
0 commit comments