https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104641
--- Comment #2 from Patrick Palka <ppalka at gcc dot gnu.org> ---
One workaround is to use a helper member function (defined alongside the nested
class template) that performs the CTAD, something like:
#include <utility>
template<class T>
struct A {
template<class U> struct B { B(U); };
template<typename... Ts>
static auto make_B(Ts&&... args) {
return B(std::forward<Ts>(args)...);
}
};
template<class T>
void f() {
auto x = A<T>::make_B(0);
}
template void f<int>();
https://godbolt.org/z/vqjff9nbs