Date: Tue, 4 Mar 2025 08:07:30 +0100
Some functions have no side effects, and while they can be often optimised,
the compiler is not aware of that.
Consider this example:
```cpp
template <std::arithmetic T> constexpr T(const T a, const T b) { return a +
b; }
```
That function could be declared as pure, or in other words, produces no
side effects.
I think this is a great way to optimise frequent calls, such as a pure
function's result can be cached for the same arguments provided.
Diagnostics: if a pure function has side effects, the compiler shall issue
a warning and calling that function is undefined.
pure member function shall be declared as const, otherwise, the program is
ill-formed.
the compiler is not aware of that.
Consider this example:
```cpp
template <std::arithmetic T> constexpr T(const T a, const T b) { return a +
b; }
```
That function could be declared as pure, or in other words, produces no
side effects.
I think this is a great way to optimise frequent calls, such as a pure
function's result can be cached for the same arguments provided.
Diagnostics: if a pure function has side effects, the compiler shall issue
a warning and calling that function is undefined.
pure member function shall be declared as const, otherwise, the program is
ill-formed.
Received on 2025-03-04 07:07:42