[libc++] std::ranges::clamp violates [alg.clamp]p5 (original) (raw)

Skip to content

Sign in

Appearance settings

View all features

View all solutions

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Sign in

Sign up

Appearance settings

llvm / llvm-project Public

Additional navigation options

New issue

New issue

Closed

#68413

Closed

[libc++] std::ranges::clamp violates [alg.clamp]p5

#64717

#68413

Assignees

ldionne

Labels

bugIndicates an unexpected problem or unintended behaviorgood first issuehttps://github.com/llvm/llvm-project/contributelibc++libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.rangesIssues related to ``

@Fulgen301

Description

@Fulgen301

Fulgen301

opened

on Aug 15, 2023

[alg.clamp]p5 mandates the complexity requirements for std::ranges::clamp to be at most two comparisons and three applications of the projection. libc++ however applies the projection four times. See godbolt.

llvm-project/libcxx/include/__algorithm/ranges_clamp.h

Lines 40 to 43 in5ed62c7

if (std::invoke(__comp, std::invoke(__proj, __value), std::invoke(__proj, __low)))
return __low;
else if (std::invoke(__comp, std::invoke(__proj, __high), std::invoke(__proj, __value)))
return __high;

Metadata

Metadata

Assignees

Labels

bugIndicates an unexpected problem or unintended behaviorgood first issuehttps://github.com/llvm/llvm-project/contributelibc++libc++ C++ Standard Library. Not GNU libstdc++. Not libc++abi.rangesIssues related to ``

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions