Revert "add type_traits"

This reverts commit 209c6373ce3342fba010728a432a7886c7e5eef6.
Revert "Revert "add type_traits""

This reverts commit a8823a6d6f83503355a7797aa07150556a4267e5.
Revert "Revert "Revert "add type_traits"""

This reverts commit cf69b0d64eab7665b48778ad77f2f833482c4d6b.
Revert "Revert "Revert "Revert "add type_traits""""

This reverts commit 3d2da5f3d017c1ff3b9abceff00ae4394678fd20.