www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Static if to compare two types are the exact same

reply "Jonathan" <jadit2 gmail.com> writes:
What's the best way to do this? I'm assuming this should be best 
practice:
http://dlang.org/traits.html#isSame

struct S { }
writeln(__traits(isSame, S, S));
Apr 06 2015
next sibling parent reply Andrej Mitrovic via Digitalmars-d-learn writes:
On 4/6/15, Jonathan via Digitalmars-d-learn
<digitalmars-d-learn puremagic.com> wrote:
 What's the best way to do this? I'm assuming this should be best
 practice:
 http://dlang.org/traits.html#isSame

 struct S { }
 writeln(__traits(isSame, S, S));
I'm not even sure when or why this trait was introduced, but you could use a simple is() expression for this, e.g.: static if (is(T == S)) { ... }
Apr 06 2015
parent reply "Jonathan" <jadit2 gmail.com> writes:
 static if (is(T == V))
Are static ifs always checked outside of runtime? Is it possible for a static if condition to be undeterminable outside of runtime, or would such a condition throw a compiler error?
Apr 06 2015
parent "w0rp" <devw0rp gmail.com> writes:
On Tuesday, 7 April 2015 at 06:37:50 UTC, Jonathan wrote:
 static if (is(T == V))
Are static ifs always checked outside of runtime? Is it possible for a static if condition to be undeterminable outside of runtime, or would such a condition throw a compiler error?
'static if' is always run at compile time, so it needs access to compile time information. Fortunately, you can access quite a lot at compile time in D.
Apr 07 2015
prev sibling parent ketmar <ketmar ketmar.no-ip.org> writes:
On Mon, 06 Apr 2015 19:16:33 +0000, Jonathan wrote:

 What's the best way to do this? I'm assuming this should be best
 practice:
 http://dlang.org/traits.html#isSame
=20
 struct S { }
 writeln(__traits(isSame, S, S));
struct S {} auto s0 =3D S(); auto s1 =3D S(); static if (is(typeof(s0) =3D=3D typeof(s1))) { pragma(msg, "Woe to the Republic."); } =
Apr 06 2015