www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - A small question default values in tmplate-functions

reply "Uplink_Coder" <someemail someprovider.some> writes:
Hello,

Suppose I have the following function

auto veryStableAPI(string parameter,VaraiadicParams...)() {
     // do something very slow and stable;
  ....
}

auto experimentalReplacement(string parameter,VaraidcParams 
...)() {
  // do the same thing very fast and dangerous
}

is the following

auto veryStableAPI(bool brave=false, string 
parameter,VaraiadicParams...) {
  static if (!brave)
      // do something very slow and stable;
  else
      // do the same thing very fast and dangerous
}
valid according to spec ?
Jan 27 2014
next sibling parent reply "Gary Willoughby" <dev nomad.so> writes:
On Monday, 27 January 2014 at 19:56:05 UTC, Uplink_Coder wrote:
 Hello,

 Suppose I have the following function

 auto veryStableAPI(string parameter,VaraiadicParams...)() {
     // do something very slow and stable;
  ....
 }

 auto experimentalReplacement(string parameter,VaraidcParams 
 ...)() {
  // do the same thing very fast and dangerous
 }

 is the following

 auto veryStableAPI(bool brave=false, string 
 parameter,VaraiadicParams...) {
  static if (!brave)
      // do something very slow and stable;
  else
      // do the same thing very fast and dangerous
 }
 valid according to spec ?
import std.stdio; import core.vararg; auto veryStableAPI(bool brave = false)(string parameter, ...) { static if (!brave) { pragma(msg, "I'm not brave"); } else { pragma(msg, "I'm very brave"); } } void main(string[] args) { veryStableAPI("test"); veryStableAPI!(true)("test"); }
Jan 28 2014
parent reply "Uplink_Coder" <someemail someprovider.some> writes:
 import std.stdio;
 import core.vararg;

 auto veryStableAPI(bool brave = false)(string parameter, ...)
 {
 	static if (!brave)
 	{
 		pragma(msg, "I'm not brave");
 	}
 	else
 	{
 		pragma(msg, "I'm very brave");
 	}
 }

 void main(string[] args)
 {
 	veryStableAPI("test");
 	veryStableAPI!(true)("test");
 }
Sorry but that does not anwer my question. is it legal or is it not ?
Jan 29 2014
parent "Gary Willoughby" <dev nomad.so> writes:
On Wednesday, 29 January 2014 at 18:24:22 UTC, Uplink_Coder wrote:
 is it legal or is it not ?
Yours isn't, no.
Jan 29 2014
prev sibling parent "Tobias Pankrath" <tobias pankrath.net> writes:
 valid according to spec ?
Only trailing parameter can have default arguments.
Jan 29 2014