nrgyzer:

Is this a bug in std.path.buildPath() or is there anything I'm doing wrong?

The signature of buildPath is:

immutable(C)[] buildPath(C)(const(C[])[] paths...);

But your inputs aren't of the same type. Named enum create their own type. You give buildPath a type string and a type path, that is not a string.

There are various solutions, this compiles, but it's not very safe:

buildPath(cast(string)path.log1, subDirectory);

Another solution is to not use a named enum:

enum : string {
    path_log1 = "/var/log1",
    path_log2 = "/var/log2"
}

buildPath(path_log1, subDirectory)

In bugzilla I have asked for an enum property that returns the raw value&type of an enum.

Bye,
bearophile

Reply via email to