-3
template<class Type>
tmp<GeometricField<Type, fvPatchField, volMesh>> operator&
(
   const fvMatrix<Type>&,
   const tmp<GeometricField<Type, fvPatchField, volMesh>>&
);

Could anyone help me understand this override function in OpenFoam? As we know, operator& override should not have two parameters. So, I am confused. And do anyone know how to use this override function? Please give me a simple example, if you are not busy? Thanks.

R Sahu
  • 204,454
  • 14
  • 159
  • 270

1 Answers1

3

As we know, operator& override should not have two parameters.

Not true.

The unary operator& and the binary operator& have two different meanings.

The unary operator& is the equivalent of the address-of operator while the binary operator& is the equivalent of the bitwise AND operator.

For reasons that are not obvious to me, the posted code defines an overload of the binary & operator between a fvMatrix<Type> and a tmp<GeometricField<Type, fvPatchField, volMesh>>.

Syntactically speaking, the usage would be:

fvMatrix<Type> var1{};
tmp<GeometricField<Type, fvPatchField, volMesh>> var2{};

auto var3 = var1 & var2;
R Sahu
  • 204,454
  • 14
  • 159
  • 270