Skip to content

Commit e9eb45b

Browse files
committed
Avoid ureachable code waring in latest MSVC 17.10.3
1 parent 72e501f commit e9eb45b

1 file changed

Lines changed: 9 additions & 2 deletions

File tree

src/variant19.lib/variant19/Variant.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ template<size_t N> constexpr auto selectVariantWhichValue() {
5454
// fail …
5555
}
5656

57+
#if defined(_MSC_VER)
58+
# pragma warning(push)
59+
# pragma warning(disable : 4702) // we expect unreachable return code
60+
#endif
5761
template<class T, class... Ts, class V, class F, size_t I, size_t... Is>
5862
constexpr auto visitRecursive(V&& v, F&& f, IndexPack<I, Is...>*) -> decltype(auto) {
5963
if (I == v.which) {
@@ -79,6 +83,9 @@ constexpr auto amendVisitRecursive(V&& v, F&& f, IndexPack<I, Is...>*) -> declty
7983
META19_UNREACHABLE();
8084
}
8185
}
86+
#if defined(_MSC_VER)
87+
# pragma warning(pop)
88+
#endif
8289

8390
} // namespace details
8491

@@ -254,11 +261,11 @@ template<class... Ts> struct Variant {
254261
/// Convinience function to overload all given lambdas
255262
template<class... Fs> requires(sizeof...(Fs) > 0)
256263
constexpr auto visitOverloaded(Fs&&... fs) const -> decltype(auto) {
257-
return indexed.visitImpl(Overloaded{(Fs &&) fs...});
264+
return indexed.visitImpl(Overloaded{(Fs&&)fs...});
258265
}
259266

260267
template<class... Fs> requires(sizeof...(Fs) > 0) constexpr auto amendOverloaded(Fs&&... fs) -> decltype(auto) {
261-
return indexed.amendVisitImpl(Overloaded{(Fs &&) fs...});
268+
return indexed.amendVisitImpl(Overloaded{(Fs&&)fs...});
262269
}
263270

264271
/// inplace change of indexed type inside variant

0 commit comments

Comments
 (0)