reified
로 지정된 순간 그 함수는 인라인된 함수라는 의미다.
실체화한 타입 파라미터를 인라인 함수에만 사용할 수 있기 때문이다.
따라서 람다를 인라이닝할 수 없는 경우나 성능 문제로 람다를 인라이닝하고 싶지 않을 경우에는 반드시 noinline
변경자를 함께 붙여줘야 한다.
무공변(invariance)이란 타입 S가 T의 하위 타입일 때, Box[S]와 Box[T] 사이에 상속 관계가 없는 것
반환 타입 혹은 파라미터 타입에 쓰일 수 있고, T 는 아웃또는 인 위치에 있다.
공변(covariance)이란 타입 S가 T의 하위 타입일 때, Box[S]가 Box[T]의 하위 타입인 것
반환 타입에 쓰이며, T 는 아웃 위치에 있다.
반공변(contravariance)이란 타입 S가 T의 하위 타입일 때, Box[S]가 Box[T]의 상위 타입인 것
파라미터 타입에 쓰이며, T 는 인 위치에 있다.