Yes, the second line of the statement is incorrect and can be completely deleted.
A type operator, for example, for example. operator int() executed
when an object is flooded or implicitly converted to type:
MyClass myObject; int i = myObject;
Naturally, operator int() should return int . For such operators, it is not required or allowed to write a specific type of return. In your case, this is not an int of float or something specific, but a template type, but it is the same idea.
In addition to the problem with the return type, the second line of the operator again defines the same operator with the same parameters, there cannot be several functions with the same names and parameters.
And after a whole struct no semicolons.
After fixing these issues, it compiles: http://ideone.com/Hvrex5
source share