dougsonos wrote:

I spent a bit more time trying to extract a reduction from libc++ today but 
failed. Here are the diagnostics that (fortunately) were enough to devise the 
fix in this PR:

```c++
...../nonblocking-wip.cpp:54:30: warning: function with 'nonblocking' attribute 
must not call non-'nonblocking' constructor 'std::expected<int, int>::expected' 
[-Wfunction-effects]
   54 |  std::expected<int, int> d = c;
      |                              ^
...../usr/include/c++/v1/__expected/expected.h:483:14: note: function pointer 
cannot be inferred 'nonblocking'
  483 |     requires(is_copy_constructible_v<_Tp> && 
is_copy_constructible_v<_Err> && is_trivially_copy_constructible_v<_Tp> &&
      |              ^
.....//nonblocking-wip.cpp:54:30: note: in template expansion here
   54 |  std::expected<int, int> d = c;
      |                              ^
```

That showed me that the `requires` clause is being traversed (inappropriately) 
and doing something that looks like an indirect call (i.e. through a function 
pointer).

https://github.com/llvm/llvm-project/pull/114266
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to