C++ Logo

std-proposals

Advanced search

[std-proposals] [[pure]] attribute

From: Tymi <tymi.cpp_at_[hidden]>
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.

Received on 2025-03-04 07:07:42