Question: What is a good attitude from developers when discussing new features, and namely, non critical/questionable features?

Say you are developing some sort of Java like language, and the boss says: "We need pointers so that developers could fiddle with object memory directly!"

Should the developer shoot down the idea because it adds unimaginable complexity and security vulnerabilities, or should he do what's asked?

This may not be a good example, but what about things that are more in a gray area, like adding buttons that break workflow, or goes against internal structure of the program, etc.?

What is the optimal "can do" vs. "can't do" distribution for a regular programmer?

EDIT: The question is not about a bad boss :D

I was more interested how do people approach new problems that add a noticeable amount of problems while maybe being marginally useful.

Should the general attitude be:

1. yes we'll do it, screw the complexity
2. maybe
3. no, the general rework, and implications don't justify the change

What should be the reaction of a good developer?

Answer: 
If your boss tells you to do stupid tasks, then you should (kindly) explain why it is stupid.

If he or she does not get the point, then you are obligated to do stupid things. That's it. He's the boss. In such case you can just do what he/she says, or talk to his/her boss or change the job.
Sometimes its actualy customer request (comming from customer internall politics). Then its hopeless and must be done (but management should also consider whether continue such project or whether should they renegotiate price.)