About
Contact
QtCreator
KDevelop
Solarized
1
2
// Copyright (C) 2006-2009, 2012 Alexander Nasonov
3
// Copyright (C) 2012 Lorenzo Caminiti
4
// Distributed under the Boost Software License, Version 1.0
5
// (see accompanying file LICENSE_1_0.txt or a copy at
6
//
http://www.boost.org/LICENSE_1_0.txt
)
7
// Home at
http://www.boost.org/libs/scope_exit
8
9
#include
<boost/scope_exit.hpp>
10
#include
<boost/config.hpp>
11
#include
<boost/typeof/typeof.hpp>
12
#include
BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP
()
13
#include
<boost/detail/lightweight_test.hpp>
14
15
template
<
typename
T>
16
struct
this_tester
;
17
BOOST_TYPEOF_REGISTER_TEMPLATE
(this_tester,
1
)
// Before`this_` capture.
18
19
template
<
typename
T>
20
struct
this_tester
{
21
void
check
(
void
) {
22
value_
= -
1
;
23
24
BOOST_SCOPE_EXIT_TPL
( (this_) ) {
25
BOOST_TEST
(
this_
->value_ ==
0
);
26
}
BOOST_SCOPE_EXIT_END
27
28
#
ifndef
BOOST_NO_CXX11_LAMBDAS
29
BOOST_SCOPE_EXIT_ALL
(&,
this
) {
30
BOOST_TEST
(
this
->value_ ==
0
);
31
};
32
#
endif
// lambdas
33
34
value_
=
0
;
35
}
36
37
private
:
38
T
value_
;
39
};
40
41
int
main
(
void
) {
42
this_tester
<
int
>
(
).
check
();
43
return
boost::
report_errors
();
44
}
45
46