There really is a difference between them, the first form of vector() is essentially a constructor for creating an object of type vector, the second entry of the form (vector) performs an implicit type cast to a vector, which will not work in this expression since we need to explicitly indicate what type it returns point function.