How to avoid inout type constructor with Optional type wrapper undoing string type
Ali Çehreli
acehreli at yahoo.com
Tue Jul 24 14:11:51 UTC 2018
On 07/24/2018 02:47 AM, Timoses wrote:
> Why does this fail while it works when replacing T with U in struct
> W(T)?? It's so odd. Both T and U seem to resolve to "string".
>
> struct W(T) {
> const T value;
> // Replacing `T value` with `U value` compiles
> this(U : T)(auto ref const T value) {
That means, "any U that can implicitly be converted to string". However,
when U does not appear in the function parameter list, there is no way
for the compiler to deduce U. (I don't think there is syntax to specify
constructor template parameters explicitly.)
And if the parameter is always T, why is the constructor a template? Ok,
perhaps U is used inside the constructor and the programmer needs to
specify it... Still, I don't think there is such syntax.
Ali
More information about the Digitalmars-d-learn
mailing list