www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How can I enforce an parameter to be constant know at compile time?

reply Dr.No <jckj33 gmail.com> writes:
I'd like help of compiler to check this:

consider this:

int f(int n) {
   m_n = n;
}

f(10); // ok
f(myTampleteFunction!(compileTimeParameter)); // ok
enum n = 10;
f(n); // I won't use this, but should also be ok
int x = 10;
f(x); // error
int g() { return 20; }
f(g); // error


How can I enforce that?
Jun 12 2018
next sibling parent Adam D. Ruppe <destructionator gmail.com> writes:
On Tuesday, 12 June 2018 at 18:27:17 UTC, Dr.No wrote:
 How can I enforce that?
Only way is to make it a compile time (template) param.
Jun 12 2018
prev sibling parent Stefan Koch <uplink.coder googlemail.com> writes:
On Tuesday, 12 June 2018 at 18:27:17 UTC, Dr.No wrote:
 I'd like help of compiler to check this:

 consider this:

 int f(int n) {
   m_n = n;
 }

 f(10); // ok
 f(myTampleteFunction!(compileTimeParameter)); // ok
 enum n = 10;
 f(n); // I won't use this, but should also be ok
 int x = 10;
 f(x); // error
 int g() { return 20; }
 f(g); // error


 How can I enforce that?
write a static assert :)
Jun 12 2018