Eeewwww! (How does the triangle draw itself?)
Eeewwww! (Why would this do anything other than print "3d_object(10,40,50)"?)
What's wrong with your restated premise?
Don't make objects do things they weren't born to do by subverting free functions with the operators' names.
polygon triangle; (triangle(), 0.0f, 1.0f, 0.0f, -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f);
my_context << triangle;