diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
index 10c6d9c300ff9402701fb9f315830d50af7c19b4..1062ac09540eeb229cdedb27431ab754ca78e823 100644
--- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
+++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C
@@ -941,7 +941,14 @@ void Foam::GeometricField<Type, PatchField, GeoMesh>::relax()
 {
     word name = this->name();
 
-    if (this->mesh().data::lookupOrDefault<bool>("finalIteration", false))
+    if
+    (
+        this->mesh().data::template lookupOrDefault<bool>
+        (
+            "finalIteration",
+            false
+        )
+    )
     {
         name += "Final";
     }
diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H b/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H
index 849dd3d6dbaee4071b32f00212b9920f641268c7..78cb5d5ad0fac308dd886af306262bc3fcb9e839 100644
--- a/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H
+++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/MapGeometricFields.H
@@ -74,8 +74,8 @@ void MapGeometricFields
 {
     HashTable<const GeometricField<Type, PatchField, GeoMesh>*> fields
     (
-        mapper.thisDb().objectRegistry::lookupClass
-            <GeometricField<Type, PatchField, GeoMesh> >()
+        mapper.thisDb().objectRegistry::template
+            lookupClass<GeometricField<Type, PatchField, GeoMesh> >()
     );
 
     // It is necessary to enforce that all old-time fields are stored
diff --git a/src/OpenFOAM/meshes/MeshObject/MeshObject.C b/src/OpenFOAM/meshes/MeshObject/MeshObject.C
index 4950476a241dbe9e5e1454fbfc37055a937ff070..e9eac11a326edc08ce291aeac097c0238ec7c06c 100644
--- a/src/OpenFOAM/meshes/MeshObject/MeshObject.C
+++ b/src/OpenFOAM/meshes/MeshObject/MeshObject.C
@@ -52,13 +52,22 @@ const Type& Foam::MeshObject<Mesh, Type>::New
     const Mesh& mesh
 )
 {
-    if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
-        return store(new Type(mesh));
+        return mesh.thisDb().objectRegistry::template lookupObject<Type>
+        (
+            Type::typeName
+        );
     }
     else
     {
-        return mesh.thisDb().objectRegistry::lookupObject<Type>(Type::typeName);
+        return store(new Type(mesh));
     }
 }
 
@@ -71,13 +80,22 @@ const Type& Foam::MeshObject<Mesh, Type>::New
     const Data1& d
 )
 {
-    if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
-        return store(new Type(mesh, d));
+        return mesh.thisDb().objectRegistry::template lookupObject<Type>
+        (
+            Type::typeName
+        );
     }
     else
     {
-        return mesh.thisDb().objectRegistry::lookupObject<Type>(Type::typeName);
+        return store(new Type(mesh, d));
     }
 }
 
@@ -91,13 +109,22 @@ const Type& Foam::MeshObject<Mesh, Type>::New
     const Data2& d2
 )
 {
-    if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
-        return store(new Type(mesh, d1, d2));
+        return mesh.thisDb().objectRegistry::template lookupObject<Type>
+        (
+            Type::typeName
+        );
     }
     else
     {
-        return mesh.thisDb().objectRegistry::lookupObject<Type>(Type::typeName);
+        return store(new Type(mesh, d1, d2));
     }
 }
 
@@ -112,13 +139,22 @@ const Type& Foam::MeshObject<Mesh, Type>::New
     const Data3& d3
 )
 {
-    if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
-        return store(new Type(mesh, d1, d2, d3));
+        return mesh.thisDb().objectRegistry::template lookupObject<Type>
+        (
+            Type::typeName
+        );
     }
     else
     {
-        return mesh.thisDb().objectRegistry::lookupObject<Type>(Type::typeName);
+        return store(new Type(mesh, d1, d2, d3));
     }
 }
 
@@ -134,13 +170,22 @@ const Type& Foam::MeshObject<Mesh, Type>::New
     const Data4& d4
 )
 {
-    if (!mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
-        return store(new Type(mesh, d1, d2, d3, d4));
+        return mesh.thisDb().objectRegistry::template lookupObject<Type>
+        (
+            Type::typeName
+        );
     }
     else
     {
-        return mesh.thisDb().objectRegistry::lookupObject<Type>(Type::typeName);
+        return store(new Type(mesh, d1, d2, d3, d4));
     }
 }
 
@@ -150,13 +195,19 @@ const Type& Foam::MeshObject<Mesh, Type>::New
 template<class Mesh, class Type>
 bool Foam::MeshObject<Mesh, Type>::Delete(const Mesh& mesh)
 {
-    if (mesh.thisDb().objectRegistry::foundObject<Type>(Type::typeName))
+    if
+    (
+        mesh.thisDb().objectRegistry::template foundObject<Type>
+        (
+            Type::typeName
+        )
+    )
     {
         return mesh.thisDb().checkOut
         (
             const_cast<Type&>
             (
-                mesh.thisDb().objectRegistry::lookupObject<Type>
+                mesh.thisDb().objectRegistry::template lookupObject<Type>
                 (
                     Type::typeName
                 )
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
index 108dc8e432843f88404cc8886c9f3c161b98d3ac..16386e646a8a622733b76adb1c64343b1b845d1a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.C
@@ -158,23 +158,23 @@ Foam::tmp<Foam::scalarField>
 Foam::advectiveFvPatchField<Type>::advectionSpeed() const
 {
     const surfaceScalarField& phi =
-        this->db().objectRegistry::lookupObject<surfaceScalarField>(phiName_);
+        this->db().objectRegistry::template lookupObject<surfaceScalarField>
+        (phiName_);
+
+    fvsPatchField<scalar> phip =
+        this->patch().template lookupPatchField<surfaceScalarField, scalar>
+        (
+            phiName_
+        );
 
-    fvsPatchField<scalar> phip = this->patch().lookupPatchField
-    (
-        phiName_,
-        reinterpret_cast<const surfaceScalarField*>(0),
-        reinterpret_cast<const scalar*>(0)
-    );
 
     if (phi.dimensions() == dimDensity*dimVelocity*dimArea)
     {
-        const fvPatchScalarField& rhop = this->patch().lookupPatchField
-        (
-            rhoName_,
-            reinterpret_cast<const volScalarField*>(0),
-            reinterpret_cast<const scalar*>(0)
-        );
+        const fvPatchScalarField& rhop =
+            this->patch().template lookupPatchField<volScalarField, scalar>
+            (
+                rhoName_
+            );
 
         return phip/(rhop*this->patch().magSf());
     }
@@ -201,7 +201,7 @@ void Foam::advectiveFvPatchField<Type>::updateCoeffs()
     scalar deltaT = this->db().time().deltaTValue();
 
     const GeometricField<Type, fvPatchField, volMesh>& field =
-        this->db().objectRegistry::
+        this->db().objectRegistry::template
         lookupObject<GeometricField<Type, fvPatchField, volMesh> >
         (
             this->dimensionedInternalField().name()
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
index cf370754e885f66055710978bcb43131af6821a0..fb2d2502051ca96a1d28e978a9070310a847f8d2 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.C
@@ -139,7 +139,9 @@ void Foam::outletMappedUniformInletFvPatchField<Type>::updateCoeffs()
         f.boundaryField()[outletPatchID];
 
     const surfaceScalarField& phi =
-        this->db().objectRegistry::lookupObject<surfaceScalarField>(phiName_);
+        this->db().objectRegistry::template lookupObject<surfaceScalarField>
+        (phiName_);
+
     const scalarField& outletPatchPhi = phi.boundaryField()[outletPatchID];
     scalar sumOutletPatchPhi = gSum(outletPatchPhi);
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
index 81530009e732f1b83216387bb93ea46d7606874c..a05d3f3fc5fd6e83e676a3a01d8a6a83d5e5549d 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.C
@@ -115,7 +115,7 @@ Foam::waveTransmissiveFvPatchField<Type>::advectionSpeed() const
     );
 
     const surfaceScalarField& phi =
-        this->db().objectRegistry::lookupObject<surfaceScalarField>
+        this->db().objectRegistry::template lookupObject<surfaceScalarField>
         (this->phiName_);
 
     fvsPatchField<scalar> phip = this->patch().lookupPatchField
diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C
index 8adf1fb4798d1934d6ed7d298ab048a39e3a647b..6facd5a8c70cfd567cfb81dea6cc6e960de1cb83 100644
--- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C
+++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicholsonDdtScheme/CrankNicholsonDdtScheme.C
@@ -50,7 +50,7 @@ CrankNicholsonDdtScheme<Type>::DDt0Field<GeoField>::DDt0Field
 :
     GeoField(io, mesh),
     startTimeIndex_(-2) // This field is for a restart and thus correct so set
-                        // the start time-index to corespond to a previous run
+                        // the start time-index to correspond to a previous run
 {
     // Set the time-index to the beginning of the run to ensure the field
     // is updated during the first time-step
@@ -108,7 +108,7 @@ CrankNicholsonDdtScheme<Type>::ddt0_
     const dimensionSet& dims
 )
 {
-    if (!mesh().objectRegistry::foundObject<GeoField>(name))
+    if (!mesh().objectRegistry::template foundObject<GeoField>(name))
     {
         const Time& runTime = mesh().time();
         word startTimeName = runTime.timeName(runTime.startTime().value());
@@ -173,7 +173,7 @@ CrankNicholsonDdtScheme<Type>::ddt0_
     (
         const_cast<GeoField&>
         (
-            mesh().objectRegistry::lookupObject<GeoField>(name)
+            mesh().objectRegistry::template lookupObject<GeoField>(name)
         )
     );
 
diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C
index 8b5fe573a2fc87b411b9db95e6d07729e21edb91..be0593435904a995c5ffd1f89e4e802efd6214e4 100644
--- a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C
+++ b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C
@@ -90,7 +90,8 @@ template<class Type>
 tmp<volScalarField> SLTSDdtScheme<Type>::SLrDeltaT() const
 {
     const surfaceScalarField& phi =
-        mesh().objectRegistry::lookupObject<surfaceScalarField>(phiName_);
+        mesh().objectRegistry::template
+            lookupObject<surfaceScalarField>(phiName_);
 
     const dimensionedScalar& deltaT = mesh().time().deltaT();
 
@@ -125,8 +126,10 @@ tmp<volScalarField> SLTSDdtScheme<Type>::SLrDeltaT() const
     else if (phi.dimensions() == dimensionSet(1, 0, -1, 0, 0))
     {
         const volScalarField& rho =
-            mesh().objectRegistry::lookupObject<volScalarField>(rhoName_)
-           .oldTime();
+            mesh().objectRegistry::template lookupObject<volScalarField>
+            (
+                rhoName_
+            ).oldTime();
 
         rDeltaT.internalField() = max
         (
diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C
index b0e2f9bb115378952f7904cd9a7803a28ad59c3d..60fc42a1192fdd4f54d92d9d8df5285ed877bcdf 100644
--- a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C
+++ b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C
@@ -42,7 +42,8 @@ namespace fv
 template<class Type>
 const volScalarField& localEulerDdtScheme<Type>::localRDeltaT() const
 {
-    return mesh().objectRegistry::lookupObject<volScalarField>(rDeltaTName_);
+    return mesh().objectRegistry::template lookupObject<volScalarField>
+        (rDeltaTName_);
 }
 
 
diff --git a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C
index 1b58aca6d11e79e3e14875d2d35872827921087a..5860dbec767e35158996b76e149d3a3f193c29be 100644
--- a/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C
+++ b/src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C
@@ -127,7 +127,7 @@ Foam::fv::gradScheme<Type>::grad
 
     if (!this->mesh().changing() && this->mesh().cache(name))
     {
-        if (!mesh().objectRegistry::foundObject<GradFieldType>(name))
+        if (!mesh().objectRegistry::template foundObject<GradFieldType>(name))
         {
             cachePrintMessage("Calculating and caching", name, vsf);
             tmp<GradFieldType> tgGrad = calcGrad(vsf, name);
@@ -137,7 +137,7 @@ Foam::fv::gradScheme<Type>::grad
         cachePrintMessage("Retreiving", name, vsf);
         GradFieldType& gGrad = const_cast<GradFieldType&>
         (
-            mesh().objectRegistry::lookupObject<GradFieldType>(name)
+            mesh().objectRegistry::template lookupObject<GradFieldType>(name)
         );
 
         if (gGrad.upToDate(vsf))
@@ -157,7 +157,10 @@ Foam::fv::gradScheme<Type>::grad
             regIOobject::store(tgGrad.ptr());
             GradFieldType& gGrad = const_cast<GradFieldType&>
             (
-                mesh().objectRegistry::lookupObject<GradFieldType>(name)
+                mesh().objectRegistry::template lookupObject<GradFieldType>
+                (
+                    name
+                )
             );
 
             return gGrad;
@@ -165,11 +168,14 @@ Foam::fv::gradScheme<Type>::grad
     }
     else
     {
-        if (mesh().objectRegistry::foundObject<GradFieldType>(name))
+        if (mesh().objectRegistry::template foundObject<GradFieldType>(name))
         {
             GradFieldType& gGrad = const_cast<GradFieldType&>
             (
-                mesh().objectRegistry::lookupObject<GradFieldType>(name)
+                mesh().objectRegistry::template lookupObject<GradFieldType>
+                (
+                    name
+                )
             );
 
             if (gGrad.ownedByRegistry())
diff --git a/src/finiteVolume/fvMesh/fvPatches/fvPatch/fvPatchFvMeshTemplates.C b/src/finiteVolume/fvMesh/fvPatches/fvPatch/fvPatchFvMeshTemplates.C
index 127ea953487df830eed78c5dcdafa0a84d2f9692..f1ee779d3a9b064b188b630e3db20fadc476080f 100644
--- a/src/finiteVolume/fvMesh/fvPatches/fvPatch/fvPatchFvMeshTemplates.C
+++ b/src/finiteVolume/fvMesh/fvPatches/fvPatch/fvPatchFvMeshTemplates.C
@@ -37,7 +37,8 @@ const typename GeometricField::PatchFieldType& Foam::fvPatch::lookupPatchField
 {
     return patchField<GeometricField, Type>
     (
-        boundaryMesh().mesh().objectRegistry::lookupObject<GeometricField>(name)
+        boundaryMesh().mesh().objectRegistry::template
+            lookupObject<GeometricField>(name)
     );
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitFuncs.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitFuncs.C
index cdcabd8dc98bee702a70ffceab408f1c7000d423..fb46762e107b2a2c380abb9e55bd3c858f15100e 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitFuncs.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitFuncs.C
@@ -72,7 +72,7 @@ inline tmp<volScalarField> rhoMagSqr<Type>::operator()
 ) const
 {
     const volScalarField& rho =
-        phi.db().objectRegistry::lookupObject<volScalarField>("rho");
+        phi.db().objectRegistry::template lookupObject<volScalarField>("rho");
     return Foam::magSqr(phi/rho);
 }
 
@@ -84,7 +84,7 @@ inline tmp<volScalarField> rhoMagSqr<scalar>::operator()
 ) const
 {
     const volScalarField& rho =
-        phi.db().objectRegistry::lookupObject<volScalarField>("rho");
+        phi.db().objectRegistry::template lookupObject<volScalarField>("rho");
     return phi/rho;
 }
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/PhiScheme/PhiScheme.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/PhiScheme/PhiScheme.C
index c003dcafe1b9ed79ddc454f65fbbe95719cc94cd..8e19f84fe6a92704c5bf368188a4a81a5778d8cd 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/PhiScheme/PhiScheme.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/PhiScheme/PhiScheme.C
@@ -69,7 +69,9 @@ Foam::PhiScheme<Type, PhiLimiter>::limiter
     if (this->faceFlux_.dimensions() == dimDensity*dimVelocity*dimArea)
     {
         const volScalarField& rho =
-            phi.db().objectRegistry::lookupObject<volScalarField>("rho");
+            phi.db().objectRegistry::template lookupObject<volScalarField>
+            ("rho");
+
         tUflux = this->faceFlux_/fvc::interpolate(rho);
     }
     else if (this->faceFlux_.dimensions() != dimVelocity*dimArea)
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H
index 9be5eaf087c1c531d2944e1ac40dd18c99c89a05..38c5205c3267b855c1e0b7a3482c648c92aadb4d 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H
@@ -124,7 +124,7 @@ public:
         ) const
         {
             const surfaceScalarField& blendingFactor =
-                this->mesh().objectRegistry::
+                this->mesh().objectRegistry::template
                 lookupObject<const surfaceScalarField>
                 (
                     word(vf.name() + "BlendingFactor")
@@ -142,7 +142,7 @@ public:
         {
             const surfaceScalarField& blendingFactor =
             (
-                this->mesh().objectRegistry::
+                this->mesh().objectRegistry::template
                 lookupObject<const surfaceScalarField>
                 (
                     word(vf.name() + "BlendingFactor")
@@ -171,7 +171,7 @@ public:
         ) const
         {
             const surfaceScalarField& blendingFactor =
-                this->mesh().objectRegistry::
+                this->mesh().objectRegistry::template
                 lookupObject<const surfaceScalarField>
                 (
                     word(vf.name() + "BlendingFactor")
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/weighted/weighted.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/weighted/weighted.H
index 6e540fee3a88ecc48255b6188b01b314d62d09df..d51433a3e3c90b596e14e3f0af28a7791f2920ef 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/weighted/weighted.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/weighted/weighted.H
@@ -84,8 +84,11 @@ public:
             surfaceInterpolationScheme<Type>(mesh),
             weights_
             (
-                this->mesh().objectRegistry::
-                lookupObject<const surfaceScalarField>(word(is))
+                this->mesh().objectRegistry::template
+                lookupObject<const surfaceScalarField>
+                (
+                    word(is)
+                )
             )
         {}
 
@@ -100,7 +103,7 @@ public:
             surfaceInterpolationScheme<Type>(mesh),
             weights_
             (
-                this->mesh().objectRegistry::
+                this->mesh().objectRegistry::template
                 lookupObject<const surfaceScalarField>
                 (
                     word(is)
diff --git a/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C b/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
index a5bf7b9412af75a989025471d3d7a8dfe16fb4c6..f0a97e2805c571f5f5e339244a2d02e7aaf5921a 100644
--- a/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
+++ b/src/fvMotionSolver/fvPatchFields/derived/cellMotion/cellMotionFvPatchField.C
@@ -109,11 +109,9 @@ void Foam::cellMotionFvPatchField<Type>::updateCoeffs()
     pfName.replace("cell", "point");
 
     const GeometricField<Type, pointPatchField, pointMesh>& pointMotion =
-        this->db().objectRegistry::
-        lookupObject<GeometricField<Type, pointPatchField, pointMesh> >
-        (
-            pfName
-        );
+        this->db().objectRegistry::template
+            lookupObject<GeometricField<Type, pointPatchField, pointMesh> >
+            (pfName);
 
     forAll(p, i)
     {
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
index d588e69fd309d3bd1e8477c212f00a677e3fb4a2..1773a82db762ac537c6ff22f3114940064eb7e8c 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
@@ -116,7 +116,8 @@ inline Foam::ThermoParcel<ParcelType>::trackData::trackData
             interpolation<scalar>::New
             (
                 cloud.solution().interpolationSchemes(),
-                cloud.mesh().objectRegistry::lookupObject<volScalarField>("G")
+                cloud.mesh().objectRegistry::template
+                    lookupObject<volScalarField>("G")
             ).ptr()
         );
     }
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
index 250074a975b9fe8d024d38dbe913942bdd7bd143..22f11402701ba3f69da9cceca1bf18fa7db90474 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/DispersionModel/DispersionRASModel/DispersionRASModel.C
@@ -38,7 +38,10 @@ Foam::DispersionRASModel<CloudType>::DispersionRASModel
     DispersionModel<CloudType>(owner),
     turbulence_
     (
-        owner.mesh().objectRegistry::lookupObject<compressible::RASModel>
+        owner.mesh().objectRegistry::template lookupObject
+        <
+            compressible::RASModel
+        >
         (
             "RASProperties"
         )
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C
index 40f7b61be55658a28879886ff308c40efe630d95..75f34af8eba6b0e9c5866a1d52e8b7a0d923167e 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/FieldActivatedInjection/FieldActivatedInjection.C
@@ -80,14 +80,14 @@ Foam::FieldActivatedInjection<CloudType>::FieldActivatedInjection
     factor_(readScalar(this->coeffDict().lookup("factor"))),
     referenceField_
     (
-        owner.db().objectRegistry::lookupObject<volScalarField>
+        owner.db().objectRegistry::template lookupObject<volScalarField>
         (
             this->coeffDict().lookup("referenceField")
         )
     ),
     thresholdField_
     (
-        owner.db().objectRegistry::lookupObject<volScalarField>
+        owner.db().objectRegistry::template lookupObject<volScalarField>
         (
             this->coeffDict().lookup("thresholdField")
         )
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
index f1ef48de9dcb6a17c521a9ea98802d0b04bbe5ab..a454c5daad1d53fc50ecc937c6ca93193cba48f9 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
+++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C
@@ -134,7 +134,7 @@ void Foam::SurfaceFilmModel<CloudType>::inject(TrackData& td)
 
     // Retrieve the film model from the owner database
     const surfaceFilmModels::surfaceFilmModel& filmModel =
-        this->owner().db().objectRegistry::lookupObject
+        this->owner().db().objectRegistry::template lookupObject
         <surfaceFilmModels::surfaceFilmModel>
         (
             "surfaceFilmProperties"
diff --git a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C
index 1a037fdc7792afb649a764aebd6065b42a70a23d..c0d9f69e7703a4c115219b37c071d21cf1c89013 100644
--- a/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C
+++ b/src/lagrangian/intermediate/submodels/Thermodynamic/SurfaceFilmModel/ThermoSurfaceFilm/ThermoSurfaceFilm.C
@@ -492,7 +492,10 @@ Foam::ThermoSurfaceFilm<CloudType>::ThermoSurfaceFilm
 :
     SurfaceFilmModel<CloudType>(dict, owner, g, typeName),
     rndGen_(owner.rndGen()),
-    thermo_(owner.db().objectRegistry::lookupObject<SLGThermo>("SLGThermo")),
+    thermo_
+    (
+        owner.db().objectRegistry::template lookupObject<SLGThermo>("SLGThermo")
+    ),
     TFilmPatch_(0),
     CpFilmPatch_(0),
     interactionType_
@@ -567,7 +570,7 @@ bool Foam::ThermoSurfaceFilm<CloudType>::transferParcel
     surfaceFilmModels::surfaceFilmModel& filmModel =
         const_cast<surfaceFilmModels::surfaceFilmModel&>
         (
-            this->owner().db().objectRegistry::
+            this->owner().db().objectRegistry::template
                 lookupObject<surfaceFilmModels::surfaceFilmModel>
                 (
                     "surfaceFilmProperties"