I haven't tested the code yet

And the :: is because my code is in a namespace.