https://webnautes.tistory.com/1158
https://www.section.io/engineering-education/understanding-c++-templates/
https://velog.io/@springkim/C-template-argument
https://www.programiz.com/cpp-programming/class-templates