# Question about generics and \`Base.@kwdef\`

**URL:** https://discourse.julialang.org/t/question-about-generics-and-base-kwdef/77514
**Category:** General Usage
**Created:** [March 7, 2022, 2:29pm UTC](https://discourse.julialang.org/t/question-about-generics-and-base-kwdef/77514 "2022-03-07T14:29:01Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)
#### Post date: [March 7, 2022, 2:29pm UTC](https://discourse.julialang.org/t/question-about-generics-and-base-kwdef/77514/1 "2022-03-07T14:29:01Z")

</div>

Hi all 🙂

What did I do wrong? The following doesn’t work.

```julia
Base.@kwdef struct A{T}
    a::T = T()
    function A(a::T) where T
        new{T}(a)
    end
end

struct B end

A{B}()

ERROR: LoadError: MethodError: no method matching A{B}(::B)
Closest candidates are:
  A{T}(; a) where T at C:\Users\<user>\AppData\Local\Programs\Julia-1.7.1\share\julia\base\util.jl:490
Stacktrace:
 [1] A{B}(; a::B)
   @ Main .\util.jl:490
 [2] A{B}()
   @ Main .\util.jl:490
 [3] top-level scope
   @ c:\start.jl:1
in expression starting at c:\start.jl:1

```

Cheers

---

<div class="post-metadata">

### Author: ![goerch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerch/32/29122_2.png) [@goerch](https://discourse.julialang.org/u/goerch)
#### Post date: [March 7, 2022, 2:41pm UTC](https://discourse.julialang.org/t/question-about-generics-and-base-kwdef/77514/2 "2022-03-07T14:41:38Z")

</div>

You need either two inner constructors (or none)

```julia
Base.@kwdef struct A{T}
    a::T = T()
    function A(a::T) where T
        new{T}(a)
    end
    function A{T}(a::T) where T
        new{T}(a)
    end
end

struct B end

@show A{B}()
@show A(B())

```

because

> If any inner constructor method is defined, no default constructor method is provided:

from [the documentation](https://docs.julialang.org/en/v1/manual/constructors/#man-inner-constructor-methods).
