diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 49f1849cb31260d53f92f0cadbe37b0790b6dddb..ed0c1d84f7ee45b751b407d4cc94cc8f56070a1f 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -3628,7 +3628,7 @@ const LLMeshSkinInfo* LLVOVolume::getSkinInfo() const
     return nullptr;
 }
 
-std::optional<std::pair<LLMatrix4a*, F32*>> LLVOVolume::getCachedSkinRenderMatrix(U32& joint_count, LLVOAvatar *avatar, const LLMeshSkinInfo* skin)
+absl::optional<std::pair<LLMatrix4a*, F32*>> LLVOVolume::getCachedSkinRenderMatrix(U32& joint_count, LLVOAvatar *avatar, const LLMeshSkinInfo* skin)
 {
 	// Calculate this only once per frame
 	const U32 curFrameCount = LLFrameTimer::getFrameCount();
diff --git a/indra/newview/llvovolume.h b/indra/newview/llvovolume.h
index 8296e2f74a883f753c539bdd4995acaf410472f2..ee2bba1d1557265b73377f2ddef2534db34b16c3 100644
--- a/indra/newview/llvovolume.h
+++ b/indra/newview/llvovolume.h
@@ -37,6 +37,7 @@
 #include <map>
 #include <set>
 
+#include "absl/types/optional.h"
 
 class LLViewerTextureAnim;
 class LLDrawPool;
@@ -300,7 +301,7 @@ class LLVOVolume final : public LLViewerObject
 	BOOL setIsFlexible(BOOL is_flexible);
 
     const LLMeshSkinInfo* getSkinInfo() const;
-	std::optional<std::pair<LLMatrix4a*, F32*>> getCachedSkinRenderMatrix(U32& joint_count, LLVOAvatar* avatar, const LLMeshSkinInfo* skin = nullptr);
+	absl::optional<std::pair<LLMatrix4a*, F32*>> getCachedSkinRenderMatrix(U32& joint_count, LLVOAvatar* avatar, const LLMeshSkinInfo* skin = nullptr);
     
     // Extended Mesh Properties
     U32 getExtendedMeshFlags() const;