Chained Ternaries

UseCase:

You need to fork/exec a program. You need to pass CommandLine options based on variable bound information. You want to be concise.

Example:

 int main(int, char**)
 {
  int geometry = metrics::large;
  const char* args[] = {
    "program",   // arg0 is always the program name
    "-geometry", // specify the geometry
    false ? 0
     : metrics::large == geometry
     ? "1024x768"    
     : metrics::small == geometry
     ? "640x480"
     : "default",
    0};

// error checking omitted for brevity execv(args[0], args); return 0; }


Is it just me, or is this TooCleverByHalf?? I think the equivalent code without chained ternaries is just as readable.

A collegue pointed out that it isn't the simplest possible thing, and that an IdiotProgrammer doing maintenance might not get it...


CategoryCee


EditText of this page (last edited January 30, 2007) or FindPage with title or text search