T[] concat(T)(const(T[]) arr1, const(T[]) arr2) pure
return cast(T[])(arr1 ~ arr2);
import std.meta : AliasSeq;
static foreach (T; AliasSeq!(char, const(char), immutable(char))) {{
pragma(msg, T.stringof, ":");
pragma(msg, "Variable: ", typeof(s~s).stringof);
pragma(msg, "Literal: ", typeof(s~"").stringof);
char* p1 = (concat(s, s)).ptr;
const(char)* p3 = (concat(s, s)).ptr;
const(char)[] c = concat(s, s);
char* p1 = (concat(s, "")).ptr;
const(char)* p3 = (concat(s, "")).ptr;
char[] a = concat(s, "");
string b = concat(s, "");
const(char)[] c = concat(s, "");