mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
40 lines
944 B
Text
40 lines
944 B
Text
Typesafe variadic class parameters have been deprecated
|
|
|
|
This obscure feature allowed a limited form of implicit construction:
|
|
|
|
---
|
|
void check(bool x, Exception e...)
|
|
{
|
|
if (!x)
|
|
throw e;
|
|
}
|
|
|
|
void main(string[] args)
|
|
{
|
|
check(args.length > 1, "missing argument");
|
|
}
|
|
---
|
|
|
|
However, few uses of this feature have been found, and one project was actually mistakenly using it instead of the more common Typesafe variadic array parameter.
|
|
Considering D doesn't support implicit construction and already has a confusing amount of different variadic parameter forms, it was decided to remove this feature.
|
|
|
|
As a corrective action, either call the constructor in the callee:
|
|
|
|
---
|
|
void check(string msg)
|
|
{
|
|
if (!x)
|
|
throw new Exception(msg);
|
|
}
|
|
---
|
|
|
|
Or let the caller construct the class instance:
|
|
|
|
---
|
|
void check(bool x, Exception e);
|
|
|
|
void main(string[] args)
|
|
{
|
|
check(args.length > 1, new Exception("missing argument"));
|
|
}
|
|
---
|