C++ User Literal for amrex::Real (_rt) #577
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds a user literal for
amrex::Real
. This is a C++11 feature and allows to type constants properly instead of relying on implicit conversation.A typical fallacy is the following user code:
The first term
4/3
makes the whole expression anint
until the result is casted toamrex::Real
. Urgh,4/3 == 1
!We can do better, with
amrex::Real(4) / amrex::Real(3)
but who wants to write such verbose code, right? Or4./3.
which is always adouble
operation? No. So C++11 user literals to the rescue!Note: the naming
rt
is borrowed from the Fortran equivalent usage in AMReX.