From 567972631b1746ac9e068ef35af67d0ceb1339f9 Mon Sep 17 00:00:00 2001 From: Sean Baxter Date: Thu, 7 Nov 2024 07:16:41 -0500 Subject: [PATCH] Added template keyword in __tuple.hpp for member name disambiguation. The mainline compilers accept the code as-is... for now. CWG1835 is resolved with the template kw. There's a recent patch waiting on-deck for Clang to require template in this position: https://github.com/llvm/llvm-project/pull/92957 Circle requires the token now. --- include/stdexec/__detail/__tuple.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/stdexec/__detail/__tuple.hpp b/include/stdexec/__detail/__tuple.hpp index 0eadaa158..572a065b1 100644 --- a/include/stdexec/__detail/__tuple.hpp +++ b/include/stdexec/__detail/__tuple.hpp @@ -56,12 +56,12 @@ namespace stdexec { struct __tuple<_Idx, _Ts...> : __box<_Ts, _Is>... { template static __tuple __convert_from(__tuple<_Idx, _Us...> &&__tup) { - return __tuple{{static_cast<_Us &&>(__tup.__box<_Us, _Is>::__value)}...}; + return __tuple{{static_cast<_Us &&>(__tup.template __box<_Us, _Is>::__value)}...}; } template static __tuple __convert_from(__tuple<_Idx, _Us...> const &__tup) { - return __tuple{{__tup.__box<_Us, _Is>::__value}...}; + return __tuple{{__tup.template __box<_Us, _Is>::__value}...}; } template @@ -70,12 +70,12 @@ namespace stdexec { apply(_Fn &&__fn, _Self &&__self, _Us &&...__us) // noexcept(noexcept(static_cast<_Fn &&>(__fn)( static_cast<_Us &&>(__us)..., - static_cast<_Self &&>(__self).__box<_Ts, _Is>::__value...))) + static_cast<_Self &&>(__self).template __box<_Ts, _Is>::__value...))) -> decltype(static_cast<_Fn &&>(__fn)( static_cast<_Us &&>(__us)..., - static_cast<_Self &&>(__self).__box<_Ts, _Is>::__value...)) { + static_cast<_Self &&>(__self).template __box<_Ts, _Is>::__value...)) { return static_cast<_Fn &&>(__fn)( - static_cast<_Us &&>(__us)..., static_cast<_Self &&>(__self).__box<_Ts, _Is>::__value...); + static_cast<_Us &&>(__us)..., static_cast<_Self &&>(__self).template __box<_Ts, _Is>::__value...); } template @@ -86,7 +86,7 @@ namespace stdexec { noexcept((__nothrow_callable<_Fn, _Us..., __copy_cvref_t<_Self, _Ts>> && ...)) -> void { return ( static_cast<_Fn &&>(__fn)( - static_cast<_Us &&>(__us)..., static_cast<_Self &&>(__self).__box<_Ts, _Is>::__value), + static_cast<_Us &&>(__us)..., static_cast<_Self &&>(__self).template __box<_Ts, _Is>::__value), ...); } };