It's complicated, but you can look in Code Contracts , an extension for Visual Studio that allows you to specify custom compile-time checks for your code.
Using this, you can include strings in operator declarations (both implicit and explicit), such as:
Contract.Requires(val < (1<<12));
, . .