title: C++ preprocessor #define-ing a keyword. Is it standards conforming?
body: <p>Help settle the debate that's going on in the comments at <a href="https://stackoverflow.com/questions/2725044/can-i-assume-booltrue-int1-for-any-c-compiler/2725063#2725063">this question about bool and 1</a>:</p>
  
  <p>Can a standards-conforming C++ preprocessor allow one to use <code>#define</code> to redefine a language keyword? If so, must a standards-conforming C++ preprocessor allow this?</p>
  
  <p>If a C++ program redefines a language keyword, can that program itself be standards conforming?</p>