X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fcore%2Fmeta.h;h=923096517dba8132a873de68a79344ab6e2910b1;hp=0034512b6ec2bea573ffbcc34115fc8562a5cac8;hb=ff0d3252cad08280b9c320b3fea5a11c80406c23;hpb=967785734be5c3fc6f75da122c2d93ebbb338271 diff --git a/source/core/meta.h b/source/core/meta.h index 0034512..9230965 100644 --- a/source/core/meta.h +++ b/source/core/meta.h @@ -11,6 +11,7 @@ template struct RemoveConst { typedef T Type; }; + template struct RemoveReference { typedef T Type; }; @@ -19,6 +20,34 @@ template struct RemoveReference { typedef T Type; }; + +template +struct EnableIf; + +template +struct EnableIf +{ typedef R Yes; }; + +template +struct EnableIf +{ typedef R No; }; + + +/** +Common fragments used in SFINAE-based decider constructs. +*/ +struct Sfinae +{ + struct Yes { char c[2]; }; + struct No { char c; }; + + template + struct Evaluate + { + enum { value = (s==sizeof(Yes)) }; + }; +}; + } // namespace Msp #endif