any: avoid creating constexpr variables since constexpr-ness isn't guaranteed

This commit is contained in:
Michele Caini
2021-09-09 14:14:58 +02:00
parent 83853c3dee
commit 608f7b75e2
+2 -2
View File
@@ -393,7 +393,7 @@ Type any_cast(basic_any<Len, Align> &&data) ENTT_NOEXCEPT {
/*! @copydoc any_cast */
template<typename Type, std::size_t Len, std::size_t Align>
const Type * any_cast(const basic_any<Len, Align> *data) ENTT_NOEXCEPT {
if(constexpr auto hash = type_hash<std::remove_const_t<std::remove_reference_t<Type>>>::value(); hash == data->type().hash_code()) {
if(data->type().hash_code() == type_hash<std::remove_const_t<std::remove_reference_t<Type>>>::value()) {
return static_cast<const Type *>(data->data());
}
@@ -404,7 +404,7 @@ const Type * any_cast(const basic_any<Len, Align> *data) ENTT_NOEXCEPT {
/*! @copydoc any_cast */
template<typename Type, std::size_t Len, std::size_t Align>
Type * any_cast(basic_any<Len, Align> *data) ENTT_NOEXCEPT {
if(constexpr auto hash = type_hash<std::remove_const_t<std::remove_reference_t<Type>>>::value(); hash == data->type().hash_code()) {
if(data->type().hash_code() == type_hash<std::remove_const_t<std::remove_reference_t<Type>>>::value()) {
// last attempt to make wrappers for const references return their values
return static_cast<Type *>(static_cast<constness_as_t<basic_any<Len, Align>, Type> *>(data)->data());
}