On Tuesday, 27 September 2016 at 14:02:25 UTC, Marc Schütz wrote:
On Tuesday, 27 September 2016 at 09:04:53 UTC, Dsciple wrote:
As said, this works fine when tested in isolation, and the compiler only complains when using BindAddress as a member of ConfigParams.
Any idea what the problem may be?
Or is there maybe a ready to use, high-level library for parsing parameters from command-line arguments and config files of some kind?

I assume your ConfigParams variable is global or static? Can you show how you initialize it, and how it's declared?

You're probably using it in a way that requires it to be evaluated at compile time. That's the case for initializers of global/static variables, as well as default values of struct members.

Yes I think so.
I use static default values for all members of ConfigParams and I instantiate ConfigParams in my unit tests, so I assume that the variable would be global there.
The code looks like:

unittest {

  string[] args = [
    "binaryFileName",
    "--bindAddresses=0.1.2.3;4.5.6.7",
    "--bindHTTPPort=80",
    "--bindHTTPSPort=443",
    "--configFile=testfiles/test.conf.sdl",
    "--verbosityLevel=detailed",
  ];

  ConfigParams configParams;  // default values for parameters
configParams.readFromAll(args); // values read from command-line arguents

  // assertion checks here
}

What do you suggest? Should I move all default initializations to a constructor?
Thank you for your response.

Reply via email to