<div>I don't like the llvm_strlen approach as it is incompatible with std::string_view which we may eventually move to.  StringLiteral will still interoperate nicely </div><div><br><div class="gmail_quote"><div>On Tue, Nov 29, 2016 at 2:20 AM Malcolm Parsons <<a href="mailto:malcolm.parsons@gmail.com">malcolm.parsons@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 28 November 2016 at 20:51, Zachary Turner via llvm-dev<br class="gmail_msg">
<<a href="mailto:llvm-dev@lists.llvm.org" class="gmail_msg" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br class="gmail_msg">
> The basic idea here is that you introduce a StringLiteral class and anywhere<br class="gmail_msg">
> you want to use a global constructor, you make sure to declare a constexpr<br class="gmail_msg">
> array instead of a normal array, and you make it of type StringLiteral.<br class="gmail_msg">
<br class="gmail_msg">
I prefer constexpr llvm_strlen() over StringLiteral because it doesn't<br class="gmail_msg">
require code changes outside StringRef - all StringRefs constructed<br class="gmail_msg">
from a literal can benefit.  But there are concerns about MSVC.<br class="gmail_msg">
I prefer StringLiteral over UDL because the type requires code<br class="gmail_msg">
changes, but the values don't.<br class="gmail_msg">
I prefer StringLiteral over explicit StringRef constructor because it's safer.<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
Malcolm Parsons<br class="gmail_msg">
</blockquote></div></div>