diff --git a/src/core/include/mp-units/framework/dimension_concepts.h b/src/core/include/mp-units/framework/dimension_concepts.h index 68f6f15d..ee2d7d9c 100644 --- a/src/core/include/mp-units/framework/dimension_concepts.h +++ b/src/core/include/mp-units/framework/dimension_concepts.h @@ -42,7 +42,7 @@ struct dimension_interface; * Satisfied by all dimension types in the library. */ MP_UNITS_EXPORT template -concept Dimension = std::derived_from && std::is_final_v; +concept Dimension = std::derived_from && std::is_empty_v && std::is_final_v; MP_UNITS_EXPORT template struct base_dimension; diff --git a/src/core/include/mp-units/framework/quantity_point_concepts.h b/src/core/include/mp-units/framework/quantity_point_concepts.h index e1c32f7f..4537428f 100644 --- a/src/core/include/mp-units/framework/quantity_point_concepts.h +++ b/src/core/include/mp-units/framework/quantity_point_concepts.h @@ -65,7 +65,7 @@ struct point_origin_interface; * Satisfied by either quantity points or by all types derived from `absolute_point_origin` class template. */ MP_UNITS_EXPORT template -concept PointOrigin = std::derived_from && std::is_final_v; +concept PointOrigin = std::derived_from && std::is_empty_v && std::is_final_v; /** * @brief A concept matching all quantity point origins for a specified quantity type in the library diff --git a/src/core/include/mp-units/framework/quantity_spec_concepts.h b/src/core/include/mp-units/framework/quantity_spec_concepts.h index 9712a434..8464954b 100644 --- a/src/core/include/mp-units/framework/quantity_spec_concepts.h +++ b/src/core/include/mp-units/framework/quantity_spec_concepts.h @@ -37,7 +37,8 @@ struct quantity_spec_interface_base; } MP_UNITS_EXPORT template -concept QuantitySpec = std::derived_from && std::is_final_v; +concept QuantitySpec = + std::derived_from && std::is_empty_v && std::is_final_v; MP_UNITS_EXPORT #if MP_UNITS_API_NO_CRTP diff --git a/src/core/include/mp-units/framework/unit_concepts.h b/src/core/include/mp-units/framework/unit_concepts.h index 5cdfc997..c0859345 100644 --- a/src/core/include/mp-units/framework/unit_concepts.h +++ b/src/core/include/mp-units/framework/unit_concepts.h @@ -43,7 +43,7 @@ struct unit_interface; * Satisfied by all unit types provided by the library. */ MP_UNITS_EXPORT template -concept Unit = std::derived_from && std::is_final_v; +concept Unit = std::derived_from && std::is_empty_v && std::is_final_v; template requires(M != magnitude<>{} && M != mag<1>)