Skip to content

Commit 4b3716c

Browse files
committed
Move unreachable code warning supression to the library implementation
1 parent f90bbf0 commit 4b3716c

3 files changed

Lines changed: 10 additions & 16 deletions

File tree

include/proxy/v4/detail/core.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -823,6 +823,13 @@ operand_t<P, IsDirect, Q> get_operand(proxy_accessor<F, IsDirect, Q> p) {
823823
return *std::forward<add_qualifier_t<P, Q>>(ptr);
824824
}
825825
}
826+
827+
// When a dispatch always throws, MSVC may incorrectly warn about unreachable
828+
// code (C4702). Disable the warning for invoke_dispatch().
829+
#if defined(_MSC_VER) && !defined(__clang__)
830+
#pragma warning(push)
831+
#pragma warning(disable : 4702)
832+
#endif // defined(_MSC_VER) && !defined(__clang__)
826833
template <class D, class R, class... Args>
827834
R invoke_dispatch(Args&&... args) {
828835
if constexpr (std::is_void_v<R>) {
@@ -831,6 +838,9 @@ R invoke_dispatch(Args&&... args) {
831838
return D()(std::forward<Args>(args)...);
832839
}
833840
}
841+
#if defined(_MSC_VER) && !defined(__clang__)
842+
#pragma warning(pop)
843+
#endif // defined(_MSC_VER) && !defined(__clang__)
834844
template <class P, class F, bool IsDirect, qualifier_type Q, class D, class R,
835845
class... Args>
836846
R reinterpret_invoke(proxy_accessor<F, IsDirect, Q> self, Args&&... args) {

tests/proxy_invocation_tests.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,7 @@
1414
#include <typeindex>
1515
#include <typeinfo>
1616
#include <vector>
17-
#if defined(_MSC_VER) && !defined(__clang__)
18-
#pragma warning(push)
19-
#pragma warning( \
20-
disable : 4702) // False alarm from MSVC: warning C4702: unreachable code
21-
#endif // defined(_MSC_VER) && !defined(__clang__)
2217
#include <proxy/proxy.h>
23-
#if defined(_MSC_VER) && !defined(__clang__)
24-
#pragma warning(pop)
25-
#endif // defined(_MSC_VER) && !defined(__clang__)
2618
#include "utils.h"
2719

2820
namespace proxy_invocation_tests_detail {

tests/proxy_regression_tests.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,7 @@
33
// Licensed under the MIT License.
44

55
#include <gtest/gtest.h>
6-
#if defined(_MSC_VER) && !defined(__clang__)
7-
#pragma warning(push)
8-
#pragma warning( \
9-
disable : 4702) // False alarm from MSVC: warning C4702: unreachable code
10-
#endif // defined(_MSC_VER) && !defined(__clang__)
116
#include <proxy/proxy.h>
12-
#if defined(_MSC_VER) && !defined(__clang__)
13-
#pragma warning(pop)
14-
#endif // defined(_MSC_VER) && !defined(__clang__)
157
#include <vector>
168

179
namespace proxy_regression_tests_detail {

0 commit comments

Comments
 (0)