Skip to content

Commit 22f3b70

Browse files
authored
Clang conformance (#779)
1 parent 8aeffb6 commit 22f3b70

File tree

2 files changed

+17
-12
lines changed

2 files changed

+17
-12
lines changed

strings/base_coroutine_threadpool.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,15 @@ namespace winrt::impl
109109
template <typename T>
110110
class awaiter_finder
111111
{
112-
template <typename U, typename = decltype(std::declval<U>().await_ready())> static constexpr bool find_awaitable_member(int) { return true; }
113112
template <typename> static constexpr bool find_awaitable_member(...) { return false; }
114-
115-
template <typename U, typename = decltype(std::declval<U>().operator co_await())> static constexpr bool find_co_await_member(int) { return true; }
116113
template <typename> static constexpr bool find_co_await_member(...) { return false; }
114+
template <typename> static constexpr bool find_co_await_free(...) { return false; }
117115

116+
#ifdef WINRT_IMPL_COROUTINES
117+
template <typename U, typename = decltype(std::declval<U>().await_ready())> static constexpr bool find_awaitable_member(int) { return true; }
118+
template <typename U, typename = decltype(std::declval<U>().operator co_await())> static constexpr bool find_co_await_member(int) { return true; }
118119
template <typename U, typename = decltype(operator co_await(std::declval<U>()))> static constexpr bool find_co_await_free(int) { return true; }
119-
template <typename> static constexpr bool find_co_await_free(...) { return false; }
120+
#endif
120121

121122
public:
122123

@@ -202,6 +203,7 @@ namespace winrt::impl
202203
template <typename T>
203204
decltype(auto) get_awaiter(T&& value) noexcept
204205
{
206+
#ifdef WINRT_IMPL_COROUTINES
205207
if constexpr (awaiter_finder<T>::has_co_await_member)
206208
{
207209
static_assert(!awaiter_finder<T>::has_co_await_free, "Ambiguous operator co_await (as both member and free function).");
@@ -216,6 +218,9 @@ namespace winrt::impl
216218
static_assert(awaiter_finder<T>::has_awaitable_member, "Not an awaitable type");
217219
return static_cast<T&&>(value);
218220
}
221+
#else
222+
return static_cast<T&&>(value);
223+
#endif
219224
}
220225

221226
template <typename T>

strings/base_reference_produce.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -274,24 +274,24 @@ namespace winrt::impl
274274
}
275275
if constexpr (std::is_enum_v<T>)
276276
{
277-
if (auto temp = value.try_as<Windows::Foundation::IReference<T>>())
277+
if (auto temp = value.template try_as<Windows::Foundation::IReference<T>>())
278278
{
279279
return temp.Value();
280280
}
281281
else
282282
{
283-
return static_cast<T>(value.as<Windows::Foundation::IReference<std::underlying_type_t<T>>>().Value());
283+
return static_cast<T>(value.template as<Windows::Foundation::IReference<std::underlying_type_t<T>>>().Value());
284284
}
285285
}
286286
#ifdef WINRT_IMPL_IUNKNOWN_DEFINED
287287
else if constexpr (std::is_same_v<T, GUID>)
288288
{
289-
return value.as<Windows::Foundation::IReference<guid>>().Value();
289+
return value.template as<Windows::Foundation::IReference<guid>>().Value();
290290
}
291291
#endif
292292
else
293293
{
294-
return value.as<Windows::Foundation::IReference<T>>().Value();
294+
return value.template as<Windows::Foundation::IReference<T>>().Value();
295295
}
296296
}
297297

@@ -300,28 +300,28 @@ namespace winrt::impl
300300
{
301301
if constexpr (std::is_enum_v<T>)
302302
{
303-
if (auto temp = value.try_as<Windows::Foundation::IReference<T>>())
303+
if (auto temp = value.template try_as<Windows::Foundation::IReference<T>>())
304304
{
305305
return temp.Value();
306306
}
307307

308-
if (auto temp = value.try_as<Windows::Foundation::IReference<std::underlying_type_t<T>>>())
308+
if (auto temp = value.template try_as<Windows::Foundation::IReference<std::underlying_type_t<T>>>())
309309
{
310310
return static_cast<T>(temp.Value());
311311
}
312312
}
313313
#ifdef WINRT_IMPL_IUNKNOWN_DEFINED
314314
else if constexpr (std::is_same_v<T, GUID>)
315315
{
316-
if (auto temp = value.try_as<Windows::Foundation::IReference<guid>>())
316+
if (auto temp = value.template try_as<Windows::Foundation::IReference<guid>>())
317317
{
318318
return temp.Value();
319319
}
320320
}
321321
#endif
322322
else
323323
{
324-
if (auto temp = value.try_as<Windows::Foundation::IReference<T>>())
324+
if (auto temp = value.template try_as<Windows::Foundation::IReference<T>>())
325325
{
326326
return temp.Value();
327327
}

0 commit comments

Comments
 (0)