public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/105766] New: requires std::is_constructible<> reports 'constraint depends on itself' error.
@ 2022-05-29 10:40 stream009 at gmail dot com
  2022-07-19 18:05 ` [Bug c++/105766] " cvs-commit at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: stream009 at gmail dot com @ 2022-05-29 10:40 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 105766
           Summary: requires std::is_constructible<> reports 'constraint
                    depends on itself' error.
           Product: gcc
           Version: 12.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: stream009 at gmail dot com
  Target Milestone: ---

GCC reports following error on following code.

|error: satisfaction of atomic constraint 'is_constructible_v<T, int> [with T =
T]' depends on itself

First of all, I can't decipher the error message. So I guessed, maybe root of
trouble is the fact, at the time of instantiation of template baz (4), although
parameter T = foo::bar is a complete type but its surrounding type foo is not.

- If I uncomment (1), the error goes away, so it seems to become a problem only
when the constraint is on a member function.
- Also the error goes away too if I uncomment (2).
- Most interestingly, error goes away if I comment out (3).
- The code compile without error on clang.

FYI, in real code, foo is thread pool, bar is worker, baz is container.

// code
// https://godbolt.org/z/M48ssEqvr
#include <type_traits>

template<typename T>
    //requires std::is_constructible_v<T, int> (1)
struct baz
{
    baz() = default;
    //template<typename = void> // (2)
    baz(int) requires std::is_constructible_v<T, int> {}
};

struct foo
{
    struct bar {
        bar() = default;
        bar(foo&);    // (3)
        bar(int);
    };
    baz<bar> m_bars; // (4)
};

int main()
{
    foo a; (void)a;
}

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

end of thread, other threads:[~2024-03-08 21:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-29 10:40 [Bug c++/105766] New: requires std::is_constructible<> reports 'constraint depends on itself' error stream009 at gmail dot com
2022-07-19 18:05 ` [Bug c++/105766] " cvs-commit at gcc dot gnu.org
2022-08-01 14:36 ` ppalka at gcc dot gnu.org
2024-03-08 21:47 ` ppalka 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).