- create_(),
- [destroy_baton, print_destructor_stack_trace, teardown, type = type()]
- (T* instance_ptr) mutable {
- teardown(instance_ptr);
- destroy_baton->post();
- if (print_destructor_stack_trace->load()) {
- std::string output = "Singleton " + type.name() + " was destroyed.\n";
-
- auto stack_trace_getter = SingletonVault::stackTraceGetter().load();
- auto stack_trace = stack_trace_getter ? stack_trace_getter() : "";
- if (stack_trace.empty()) {
- output += "Failed to get destructor stack trace.";
- } else {
- output += "Destructor stack trace:\n";
- output += stack_trace;
+ create_(),
+ [ destroy_baton, print_destructor_stack_trace, type = type() ](
+ T*) mutable {
+ destroy_baton->post();
+ if (print_destructor_stack_trace->load()) {
+ std::string output = "Singleton " + type.name() + " was released.\n";
+
+ auto stack_trace_getter = SingletonVault::stackTraceGetter().load();
+ auto stack_trace = stack_trace_getter ? stack_trace_getter() : "";
+ if (stack_trace.empty()) {
+ output += "Failed to get release stack trace.";
+ } else {
+ output += "Release stack trace:\n";
+ output += stack_trace;
+ }
+
+ LOG(ERROR) << output;