Source: https://www2.pd.infn.it/~ronchese/cxx/y1213/lectures/composite/composite.pdf