title: reference with constexpr causes multiple definition error
body: <p>I program for MCUs with CodeSourcery g++ lite which is based on gcc 4.7.2
  <br>
  I want to define peripheral objects which is located at certain address. So I try to use reference with the constexpr specifier.</p>
  
  <p>for example:</p>
  
  <pre><code>typedef int&amp; int_ref;
  constexpr int_ref i = *(int*)0;
  </code></pre>
  
  <p>If I put that code into a header, and compile my program, I will get diagnosis like:</p>
  
  <pre><code>xx1.o:(.rodata.i+0x0): multiple definition of `i'
  ...
  xxx.o:(.rodata.i+0x0): first defined here
  collect2.exe: error: ld returned 1 exit status
  </code></pre>
  
  <p>It confuses me bacause the <code>constexpr int i = 5</code> goes so happily with the compiler.
  <br><br>
  Of course there are alternative solutions:
  <br>
  1. Macros,  <code>#define i *(int*)0</code>, which pollutes every .c/.cpp file including the header. Currently, I'm using macros.
  <br>
  2. static object, <code>static constexpr int_ref i = *(int*)0;</code>. Without some compiler-option (-fdata-sections), the compiler can't eliminate unused objects and then there would be lots of space wasted.
  <br><br>
  Is there any better way to do this?</p>