From 7fcb2bdb05ca1cd6846e6c1a8227a54b2cf0dcc2 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Thu, 27 Jul 2023 16:29:41 -0400 Subject: DRTVWR-587: Make LLSDParam simplify type when delegating. LLSDParam is the generic case, when we need to pass LLSDParam adapters to some set of function parameters whose types we don't specifically know. Its templated conversion operator notices the actual parameter type T and delegates conversion to the specific LLSDParam specialization. But when T has picked up references, e.g. somewhere along the way in the LL::apply() machinery, the compiler might not choose the desired conversion because we don't have a sufficiently specific LLSDParam specialization. LLSDParam can address that by using std::decay_t when delegating to the specific LLSDParam specialization. This removes references, const and volatile. --- indra/llcommon/llsdutil.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcommon/llsdutil.h b/indra/llcommon/llsdutil.h index a6fd2fdac2..cd68f938ea 100644 --- a/indra/llcommon/llsdutil.h +++ b/indra/llcommon/llsdutil.h @@ -358,7 +358,7 @@ public: /// otherwise, instantiate a more specific LLSDParam to convert; that /// preserves the existing customization mechanism template - operator T() const { return LLSDParam(value_); } + operator T() const { return LLSDParam>(value_); } }; /** -- cgit v1.2.3