Probably the best thing about blender is that even after a decade of modelling, when you think you know it all, you can still learn something new - in this case, it's that the best way to make a smooth shaded cone in blender is to not use a cone at all. Since blender deals best in quads (especially when shading), and a cone is full of tri's due to the top face being "closed/merged", it's best to use as cylinder instead.
Take a cylinder primitive (low poly works fine). Select the top face and scale it by .001.
Select the top and bottom faces and inset by something really small like .0001.
Add loop cuts to the top and bottom:
Add a subdiv modifier, right click and shade smooth:
Of course it's not a "true" cone, but you can make the "tip" almost infinitely small, so visually, it will be imperceptible, even at close distances. Simply due to the fact that the mesh is quad based, blender won't throw any wonky shading (the kind normally associated with tri's and n-gon's).