-added constexpr definition and compiler detection