[libcxx-commits] [PATCH] D96477: [libcxx] adds remaining callable concepts

Arthur O'Dwyer via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Sun Mar 21 15:22:19 PDT 2021

Quuxplusone added inline comments.

Comment at: libcxx/test/std/concepts/callable/functions.h:27-28
+struct Bool {
+  int Value = false;
+  constexpr operator bool() const noexcept { return Value; }
zoecarver wrote:
> Quuxplusone wrote:
> > cjdb wrote:
> > > Quuxplusone wrote:
> > > > 
> > > No, this is definitely correct as-is.
> > There is no //conceivable// library bug that could cause us to treat `int Value = false;` and `int Value = 0;` any differently.
> > Also, you don't want to return `int Value` from `operator bool`; you want to return a `bool`.
> > 
> > Maybe you meant to write `bool Value = false;` instead of `int Value = false;`, is that the issue?
> @Quuxplusone why do you want to remove noexcept? 
Well, I'm always on the side of "keep it simple/short." Nothing in C++ cares about whether your conversion-to-`bool` operator is noexcept, so there's no reason to make it noexcept. (Also, it'll rarely if ever be noexcept in real-world code, so one could argue that testing shorter code is also testing //more realistic// code.)

  rG LLVM Github Monorepo



More information about the libcxx-commits mailing list