Regarding your `important` concept: boolean values are treated special, compared to other values, in concepts. Boolean `false` is treated the same way, as not compiling lines, that is make concept check fail, and `false` is default value for `bool`. Other expressions/statements are implicitly wrapped with `compiles:`, so return true disregarding of the value of the expression. These will match: type important2 = concept x x.prop1 is bool # i.e. `false is bool`, which returns `true` type important3 = concept x x.prop1 = false # treated as `compiles: x.prop1 = false`, which returns true type important3 = concept x compiles: x.prop1 # `true` type AnotherClass = ref object prop1*: int type important4 = concept x x.prop1 # wiil match `AnotherClass`, because again is treated as `compiles: x.prop1` echo AnotherClass is important4 # `true` var o: AnotherClass echo o is important4 # `true`
And you meant `is`, using `of`.