Why allow concatenation of string literals?
19:06 23 Mar 2010

I was recently bitten by a subtle bug.

char ** int2str = {
   "zero", // 0
   "one",  // 1
   "two"   // 2
   "three",// 3
   nullptr };

assert( int2str[1] == std::string("one") ); // passes
assert( int2str[2] == std::string("two") ); // fails

If you have godlike code review powers, you'll notice I forgot the , after "two".

After the considerable effort to find that bug, I've got to ask why would anyone ever want this behavior?

I can see how this might be useful for macro magic, but then why is this a "feature" in a modern language like Python?

Have you ever used string literal concatenation in production code?

python c++ c d string-literals