diff --git a/src/core/DataTypes.h b/src/core/DataTypes.h index 3ae37218d98be423b528991c762303b22c602cba..28fdf80c767dd5318e630c9f153337e33b226351 100644 --- a/src/core/DataTypes.h +++ b/src/core/DataTypes.h @@ -163,6 +163,8 @@ typedef double real_t; typedef float real_t; #endif +inline real_t operator"" _r( long double t ) { return static_cast< real_t >(t); } +inline real_t operator"" _r( unsigned long long int t ) { return static_cast< real_t >(t); } template< typename T > inline real_t real_c ( T t ) { return numeric_cast< real_t >(t); } ///< cast to type real_t using "real_c(x)" template< typename T > inline double double_c( T t ) { return numeric_cast< double >(t); } ///< cast to type double template< typename T > inline float float_c ( T t ) { return numeric_cast< float > (t); } ///< cast to type float diff --git a/tests/core/DataTypesTest.cpp b/tests/core/DataTypesTest.cpp index 4250c8d333cd15d674e29991ff77ac4c79272908..569a57f811ed9f44f538bfe8e394ac85e6e73600 100644 --- a/tests/core/DataTypesTest.cpp +++ b/tests/core/DataTypesTest.cpp @@ -52,5 +52,9 @@ int main( int /*argc*/, char** /*argv*/ ) WALBERLA_CHECK_EQUAL( math::int_ld< 2 >::exp, 1 ); WALBERLA_CHECK_EQUAL( math::int_ld< 1 >::exp, 0 ); + WALBERLA_CHECK_IDENTICAL(1.23456_r, real_c(1.23456)); + WALBERLA_CHECK_IDENTICAL(1_r, real_c(1)); + WALBERLA_CHECK_IDENTICAL(-1_r, real_c(-1)); + return EXIT_SUCCESS; }