Почему вы пытаетесь использовать дженерики, если вам нужен только int?
// No need to compare b to true...
public static int val(this bool b, int v) { return b ? v : 0; }
В противном случае используйте default(T)
, как уже упоминали другие.
public static T val<T>(this bool b, T v) { return b ? v : default(T); }
default(T)
будет по умолчанию 0 для int
с и других числовых значений, false
для bool
с, null
для объектов ...