 <p>My guess is that you're experiencing a compiler bug. The <code>format</code> keyword, as any other keyword declared with <code>BOOST_PARAMETER_KEYWORD</code> from <a href="http://www.boost.org/doc/libs/1_60_0/libs/parameter/doc/html/index.html" rel="nofollow">Boost.Parameter</a>, is indeed a constant reference. However, there is a const-qualified assignment operator in <code>boost::parameter::keyword</code>, which should be picked by the compiler.</p> <p>As a workaround, you can try replacing the keyword with a call to <code>get</code> static function like this:</p> <pre><code>// Replace this: keywords::format = "%Timestamp% %Message%" // with this: boost::parameter::keyword&lt;keywords::tag::format&gt;::get() = "%Timestamp% %Message%" </code></pre> <p>Also, please note that the attribute names are case sensitive, and the <code>add_common_attributes</code> function adds a "TimeStamp" attribute, not "Timestamp" (note the upper-case S).</p>