Bill Baxter wrote:
On Sun, Feb 22, 2009 at 11:12 PM, Denis Koroskin <[email protected]> wrote:
On Sun, 22 Feb 2009 16:50:51 +0300, Christopher Wright <[email protected]>
wrote:
Brad Roberts wrote:
Back in c and c++, with it's pre-processor, merging adjacent string
literals is very handy. In D, it's only marginally so, but not
completely useless. It can still be used to break a really long string
literal into parts. There's other string boundary tokens in D which
might well provide viable alternatives.
In C and C++, there is no way to catenate strings at compile time. The
only way to catenate strings is with strcat. That places the additional
burden on programmers that they have to include string.h. For that reason,
it makes sense to catenate adjacent string literals.
In D, there's a compile time catenation operator that doesn't require
libraries. So the catenation by association saves you only one character.
I'd say that's useless.
I agree.
I use this feature pretty frequently to break up long strings.
I think I didn't use ~ for that because it makes me think an
allocation might happen when it doesn't need to.
But after seeing the discussion here I'd be happy to switch to using
"a"~"b" as long as it's guaranteed by the language that such strings
will be concatenated at compile time. (I think the is the case now,
right?)
Yes, and because of CTFE, even complicated applications of ~ frequently
don't involve any allocation. So your intuition was wrong! Implicit
concatentation was probably one of the things which led to your false
impression. So it may be bad in that respect, as well as bug-breeding.
--bb