Use decltype in ASD_ENUM_TRAITS_LINKAGE to resolve difference in gcc and clang behaviour