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

            Bug ID: 109935
           Summary: CTAD for an aggregate with a dependent base class
                    doesn't work
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: oleksandr.koval.dev at gmail dot com
  Target Milestone: ---

https://godbolt.org/z/s9cM719n3

```cpp
template <typename T>
struct B {
    T x;
};

template <typename T>
struct C : public B<T> {
};

void f(){
    B{1};   // works as expected
    C{{1}}; // error
}
```

Not 100% sure about it but I see no reason for `C{{1}}` not to work. Extra set
of braces is required because B<T> is a dependent base class and brace elision
doesn't work for it (https://eel.is/c++draft/over.match.class.deduct#1.5.1).

Reply via email to