[C++] Fail early for unsupported automatic variables

This is for issue #40.
diff --git a/command.cc b/command.cc
index 99984c2..6b8d604 100644
--- a/command.cc
+++ b/command.cc
@@ -70,6 +70,7 @@
 DECLARE_AUTO_VAR_CLASS(AutoHatVar);
 DECLARE_AUTO_VAR_CLASS(AutoPlusVar);
 DECLARE_AUTO_VAR_CLASS(AutoStarVar);
+DECLARE_AUTO_VAR_CLASS(AutoNotImplementedVar);
 
 class AutoSuffixDVar : public AutoVar {
  public:
@@ -128,6 +129,10 @@
   pat.Stem(n->output.str()).AppendToString(s);
 }
 
+void AutoNotImplementedVar::Eval(Evaluator*, string*) const {
+  ERROR("Automatic variable `$%s' isn't supported yet", sym_);
+}
+
 void AutoSuffixDVar::Eval(Evaluator* ev, string* s) const {
   string buf;
   wrapped_->Eval(ev, &buf);
@@ -177,6 +182,10 @@
   INSERT_AUTO_VAR(AutoHatVar, "^");
   INSERT_AUTO_VAR(AutoPlusVar, "+");
   INSERT_AUTO_VAR(AutoStarVar, "*");
+  // TODO: Implement them.
+  INSERT_AUTO_VAR(AutoNotImplementedVar, "%");
+  INSERT_AUTO_VAR(AutoNotImplementedVar, "?");
+  INSERT_AUTO_VAR(AutoNotImplementedVar, "|");
 }
 
 void CommandEvaluator::Eval(DepNode* n, vector<Command*>* commands) {