From 2a201cad3e3537aea450b0faf6e3dfc18cd12b6c Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Tue, 10 Jan 2017 11:46:40 +0100 Subject: [PATCH] [FL] Added an if-else directive for for MSVC for list initialization inside member initializer list --- .../Fluid/FluidProperties/FluidProperties.h | 24 ++++++++++++++----- ...idPropertiesWithDensityDependentModels.cpp | 6 ++--- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/MaterialLib/Fluid/FluidProperties/FluidProperties.h b/MaterialLib/Fluid/FluidProperties/FluidProperties.h index 2e4743b3e68..22a224a3620 100644 --- a/MaterialLib/Fluid/FluidProperties/FluidProperties.h +++ b/MaterialLib/Fluid/FluidProperties/FluidProperties.h @@ -48,11 +48,17 @@ public: std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& heat_capacity, std::unique_ptr<MaterialLib::Fluid::FluidProperty>&& thermal_conductivity) - /* Will use this if MS visual studio compiler supports - : _property_models{{std::move(density), std::move(viscosity), - std::move(heat_capacity), - std::move(thermal_conductivity)}} - */ +#ifndef MSVC + // Up to the latest Visual Studio compiler, Visual Studio 2015 + // list initialization inside member initializer list or non-static data + // member initializer is not implemented. + // See: https://msdn.microsoft.com/en-us/library/dn793970.aspx + : _property_models{{std::move(density), std::move(viscosity), + std::move(heat_capacity), + std::move(thermal_conductivity)}} + { + } +#else { // Move to the initialization list if MS visual studio compiler supports _property_models[static_cast<unsigned>(FluidPropertyType::Density)] = @@ -65,6 +71,7 @@ public: FluidPropertyType::ThermalConductivity)] = std::move(thermal_conductivity); } +#endif virtual ~FluidProperties() = default; @@ -94,6 +101,10 @@ public: const PropertyVariableType variable_type) const = 0; protected: +#ifdef MSVC + std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> + _property_models; +#else /** Fluid property models. * 0: density; * 1: viscosity; @@ -102,8 +113,9 @@ protected: * * The index is specified via enum class PropertyType. */ - std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> + const std::array<std::unique_ptr<FluidProperty>, FluidPropertyTypeNumber> _property_models; +#endif }; } // end namespace diff --git a/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp b/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp index 9793b70a46f..c664c3c1235 100644 --- a/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp +++ b/MaterialLib/Fluid/FluidProperties/FluidPropertiesWithDensityDependentModels.cpp @@ -35,8 +35,8 @@ FluidPropertiesWithDensityDependentModels:: std::move(heat_capacity), std::move(thermal_conductivity)), _is_density_dependent{{false, is_viscosity_density_dependent, - is_heat_capacity_dependent, - is_thermal_conductivity}} + is_heat_capacity_dependent, + is_thermal_conductivity}} { } @@ -77,7 +77,7 @@ double FluidPropertiesWithDensityDependentModels::getdValue( ->getdValue(variable_values, variable_type); } - return 0.; + return 0.0; } double FluidPropertiesWithDensityDependentModels::compute_df_drho_drho_dT( -- GitLab