>
> Quick question: I have a function that takes an alias parameter:
>
>        struct X { ... };
>
>        void func(alias G)(object O) {
>                ...
>                X x = ...;
>                G(x);
>                ...
>        }
>
> How do I write a signature constraint that essentially specifies that G
> should take a parameter of type X and return void?

if ( is(typeof(G(X.init ) ) == void))

For the expression to work, G must accept an X and return a void.