blob: dc8a8915eb04d30273d4993714fd2d78e8758f97 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
From 7d7428fd09d1bcee281f7b678df8fb71e9365b17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?=
<martin.horenovsky@gmail.com>
Date: Thu, 27 Dec 2018 16:08:04 +0100
Subject: [PATCH] A different approach
---
include/internal/catch_session.cpp | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
--- a/include/internal/catch_session.cpp
+++ b/include/internal/catch_session.cpp
@@ -42,14 +42,20 @@ namespace Catch {
return createReporter(config->getReporterName(), config);
}
- auto multi = std::unique_ptr<ListeningReporter>(new ListeningReporter);
+ // On older platforms, returning std::unique_ptr<ListeningReporter>
+ // when the return type is std::unique_ptr<IStreamingReporter>
+ // doesn't compile without a std::move call. However, this causes
+ // a warning on newer platforms. Thus, we have to work around
+ // it a bit and downcast the pointer manually.
+ auto ret = std::unique_ptr<IStreamingReporter>(new ListeningReporter);
+ auto& multi = static_cast<ListeningReporter&>(*ret);
auto const& listeners = Catch::getRegistryHub().getReporterRegistry().getListeners();
for (auto const& listener : listeners) {
- multi->addListener(listener->create(Catch::ReporterConfig(config)));
+ multi.addListener(listener->create(Catch::ReporterConfig(config)));
}
- multi->addReporter(createReporter(config->getReporterName(), config));
- return std::move(multi);
+ multi.addReporter(createReporter(config->getReporterName(), config));
+ return ret;
}
|