www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - When do you use templates instead of CTFE?

reply "Dan" <enjoysmath gmail.com> writes:
Since there is CTFE, I keep running into, do I really need this 
as a template parameter?  Why not put this in a constructor.  And 
so on...
Mar 23 2012
next sibling parent reply Timon Gehr <timon.gehr gmx.ch> writes:
On 03/24/2012 07:42 AM, Dan wrote:
 Since there is CTFE, I keep running into, do I really need this as a
 template parameter? Why not put this in a constructor. And so on...

You use templates in combination with CTFE if - You have to perform computations on types. - You want template instantiation syntax. (If this is the only reason, the template will just wrap a CTFE computation)
Mar 24 2012
parent "Nick Sabalausky" <a a.a> writes:
"Timon Gehr" <timon.gehr gmx.ch> wrote in message 
news:jkkbqv$2pvu$3 digitalmars.com...
 On 03/24/2012 07:42 AM, Dan wrote:
 Since there is CTFE, I keep running into, do I really need this as a
 template parameter? Why not put this in a constructor. And so on...

You use templates in combination with CTFE if - You have to perform computations on types. - You want template instantiation syntax. (If this is the only reason, the template will just wrap a CTFE computation)

Yea, the general rule of thumb is "If you can do it with CTFE, then do so, otherwise use templates."
Mar 25 2012
prev sibling next sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Sunday, March 25, 2012 17:55:56 Nick Sabalausky wrote:
 "Timon Gehr" <timon.gehr gmx.ch> wrote in message
 news:jkkbqv$2pvu$3 digitalmars.com...
 
 On 03/24/2012 07:42 AM, Dan wrote:
 Since there is CTFE, I keep running into, do I really need this as a
 template parameter? Why not put this in a constructor. And so on...

You use templates in combination with CTFE if - You have to perform computations on types. - You want template instantiation syntax. (If this is the only reason, the template will just wrap a CTFE computation)

Yea, the general rule of thumb is "If you can do it with CTFE, then do so, otherwise use templates."

Generally, you end up having to use templates for stuff that operates on types, whereas CTFE works for stuff that can be normal functions. - Jonathan M Davis
Mar 25 2012
prev sibling next sibling parent James Miller <james aatch.net> writes:
On 26 March 2012 12:35, Jonathan M Davis <jmdavisProg gmx.com> wrote:
 On Sunday, March 25, 2012 17:55:56 Nick Sabalausky wrote:
 Yea, the general rule of thumb is "If you can do it with CTFE, then do so,
 otherwise use templates."

Generally, you end up having to use templates for stuff that operates on types, whereas CTFE works for stuff that can be normal functions. - Jonathan M Davis

Often I end up using the same function in CTFE and runtime. -- James Miller
Mar 25 2012
prev sibling parent Jonathan M Davis <jmdavisProg gmx.com> writes:
On Monday, March 26, 2012 12:39:36 James Miller wrote:
 Often I end up using the same function in CTFE and runtime.

That's pretty much the idea behind CTFE in the first place. - Jonathan M Davis
Mar 25 2012