On Wednesday, 15 July 2015 at 21:57:50 UTC, badlink wrote:
Hello, I can't figure how to write a template function that
accept either strings or array of strings.
This is my current code:
bool hasItemParent(T)(const(char)[] itemId, const(T)[] parentId)
if (is(typeof(T) == char) || (isArray!T && is(typeof(T[]) ==
char)))
{...}
I used const(T)[] because I'd like to accept immutable and
mutable strings.
But calling it with an immutable string generate this error:
Error: template cache.MetadataCache.hasItemParent cannot deduce
function from argument types !()(string, string), candidates
are:
cache.MetadataCache.hasItemParent(T)(const(char)[] itemId,
const(T)[] parentId) if (is(typeof(T) == char))
Any suggestions ?
T is already a type, you don't need to typeof() it.
This should work:
bool hasItemParent(T)(const(char)[] itemId, const(T)[] parentId)
if (is(T == char) || (isArray!T && is(ElementType!T == char)))