public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/101078] New: [11/12 Regression] Rejected code since r12-1272-gf07edb5d7f3e7721
@ 2021-06-15 10:17 marxin at gcc dot gnu.org
  2021-06-15 10:17 ` [Bug c++/101078] " marxin at gcc dot gnu.org
                   ` (12 more replies)
  0 siblings, 13 replies; 14+ messages in thread
From: marxin at gcc dot gnu.org @ 2021-06-15 10:17 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101078

            Bug ID: 101078
           Summary: [11/12 Regression] Rejected code since
                    r12-1272-gf07edb5d7f3e7721
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: jason at gcc dot gnu.org
  Target Milestone: ---

I noticed that in ceph package, note the patch was backported to 11 branch:

$ cat HttpClient.ii
namespace system {
struct error_code {};
} // namespace system
int async_initiate_token, operator0_handler2;
struct async_result {
  template <typename Initiation, typename RawCompletionToken, typename... Args>
  static void initiate(Initiation initiation, RawCompletionToken token,
                       Args... args) {
    initiation(token, args...);
  }
};
template <typename, typename, typename Initiation, typename... Args>
void async_initiate(Initiation initiation, Args... args) {
  async_result::initiate(initiation, async_initiate_token, args...);
}
using system::error_code;
struct stream_base {
  using time_point = struct op_state { bool pending; };
  struct pending_guard {
    pending_guard(bool);
  };
  static time_point never();
};
template <class, class = int, class = int>
struct basic_stream : private stream_base {
  struct ops;
  template <class MutableBufferSequence, typename ReadHandler>
  auto async_read_some(MutableBufferSequence const &, ReadHandler &&);
};
struct async_base {
  template <class Handler_> async_base(Handler_, int);
};
template <class Protocol, class Executor, class RatePolicy>
struct basic_stream<Protocol, Executor, RatePolicy>::ops {
  struct transfer_op : async_base {
    pending_guard pg_;
    op_state state();
    template <class Handler_>
    transfer_op(Handler_, basic_stream, int)
        : async_base(0, 0), pg_(state().pending) {
      (*this)({});
    }
    void operator()(long) { never(); }
  };
  struct run_read_op {
    template <class ReadHandler, class Buffers>
    void operator()(ReadHandler, basic_stream *s, Buffers b) {
      transfer_op(0, *s, b);
    }
  };
};
template <class Protocol, class Executor, class RatePolicy>
template <class MutableBufferSequence, class ReadHandler>
auto basic_stream<Protocol, Executor, RatePolicy>::async_read_some(
    MutableBufferSequence const &buffers, ReadHandler &&) {
  async_initiate<ReadHandler, void>(typename ops::run_read_op{}, this,
buffers);
}
template <typename Stream, typename Operation, typename Handler> struct io_op {
  io_op(Stream, int, Operation, Handler);
  void operator()(error_code) { next_layer_.async_read_some(0, this); }
  Stream next_layer_;
};
template <typename Stream, typename Operation, typename Handler>
void async_io(Stream next_layer, int core, Operation op, Handler handler) {
  io_op(next_layer, core, op, handler)(error_code());
}
struct stream {
  void operator0() { async_io(next_layer_, core_, int(), operator0_handler2); }
  basic_stream<int> next_layer_;
  int core_;
};

$ g++ HttpClient.ii -c -std=c++17
HttpClient.ii: In instantiation of ‘void basic_stream<
<template-parameter-1-1>, <template-parameter-1-2>, <template-parameter-1-3>
>::ops::transfer_op::operator()(long int) [with Protocol = int; Executor = int;
RatePolicy = int]’:
HttpClient.ii:41:14:   required from ‘basic_stream< <template-parameter-1-1>,
<template-parameter-1-2>, <template-parameter-1-3>
>::ops::transfer_op::transfer_op(Handler_, basic_stream<
<template-parameter-1-1>, <template-parameter-1-2>, <template-parameter-1-3> >,
int) [with Handler_ = int; Protocol = int; Executor = int; RatePolicy = int;
basic_stream< <template-parameter-1-1>, <template-parameter-1-2>,
<template-parameter-1-3> > = basic_stream<int>]’
HttpClient.ii:48:7:   required from ‘void basic_stream<
<template-parameter-1-1>, <template-parameter-1-2>, <template-parameter-1-3>
>::ops::run_read_op::operator()(ReadHandler, basic_stream<
<template-parameter-1-1>, <template-parameter-1-2>, <template-parameter-1-3>
>*, Buffers) [with ReadHandler = int; Buffers = int; Protocol = int; Executor =
int; RatePolicy = int]’
HttpClient.ii:9:15:   required from ‘static void
async_result::initiate(Initiation, RawCompletionToken, Args ...) [with
Initiation = basic_stream<int>::ops::run_read_op; RawCompletionToken = int;
Args = {basic_stream<int, int, int>*, int}]’
HttpClient.ii:14:25:   required from ‘void async_initiate(Initiation, Args ...)
[with <template-parameter-1-1> = io_op<basic_stream<int>, int, int>*;
<template-parameter-1-2> = void; Initiation =
basic_stream<int>::ops::run_read_op; Args = {basic_stream<int, int, int>*,
int}]’
HttpClient.ii:56:36:   required from ‘auto basic_stream<
<template-parameter-1-1>, <template-parameter-1-2>, <template-parameter-1-3>
>::async_read_some(const MutableBufferSequence&, ReadHandler&&) [with
MutableBufferSequence = int; ReadHandler = io_op<basic_stream<int>, int, int>*;
<template-parameter-1-1> = int; <template-parameter-1-2> = int;
<template-parameter-1-3> = int]’
HttpClient.ii:60:60:   required from ‘void io_op<Stream, Operation,
Handler>::operator()(system::error_code) [with Stream = basic_stream<int>;
Operation = int; Handler = int]’
HttpClient.ii:65:39:   required from ‘void async_io(Stream, int, Operation,
Handler) [with Stream = basic_stream<int>; Operation = int; Handler = int]’
HttpClient.ii:68:30:   required from here
HttpClient.ii:43:34: error: ‘static stream_base::time_point
stream_base::never()’ is inaccessible within this context
   43 |     void operator()(long) { never(); }
      |                             ~~~~~^~
HttpClient.ii:22:21: note: declared here
   22 |   static time_point never();
      |                     ^~~~~

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-05-13 20:11 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-15 10:17 [Bug c++/101078] New: [11/12 Regression] Rejected code since r12-1272-gf07edb5d7f3e7721 marxin at gcc dot gnu.org
2021-06-15 10:17 ` [Bug c++/101078] " marxin at gcc dot gnu.org
2021-06-15 11:32 ` marxin at gcc dot gnu.org
2021-06-15 15:03 ` ppalka at gcc dot gnu.org
2021-06-16 17:43 ` [Bug c++/101078] [9/10/11/12 " jakub at gcc dot gnu.org
2021-06-16 18:19 ` jason at gcc dot gnu.org
2021-06-16 21:29 ` cvs-commit at gcc dot gnu.org
2021-06-16 21:34 ` [Bug c++/101078] [9/10/11 " jason at gcc dot gnu.org
2021-06-16 21:35 ` cvs-commit at gcc dot gnu.org
2021-06-16 21:35 ` [Bug c++/101078] [9/10 " jason at gcc dot gnu.org
2021-06-16 21:36 ` jason at gcc dot gnu.org
2022-05-13 19:53 ` cvs-commit at gcc dot gnu.org
2022-05-13 20:10 ` cvs-commit at gcc dot gnu.org
2022-05-13 20:10 ` jason at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).