Property wrappers without parenthesis


I've just discovered that if property wrapper has generic parameters other than wrappedValue's type and it has initialiser without arguments under some constraint, you can't use this property wrapper without parenthesis:

enum First {}

struct MagicBox<T, Mode> {
  var wrappedValue: T

  init() where Mode == First {

// Error: Generic parameter 'Mode' could not be inferred
var foo: Int 

// Works fine
var foo: Int

So, as I understand, compiler has enough information to infer Mode parameter, but it can't for some reason. Is that expected behaviour or bug? May be I'm missing something?