[cfe-dev] SemaTemplateInstantiateDecl mistakenly issuing diag::warn_func_template_missing for templated deduction guides
Richard Smith via cfe-dev
cfe-dev at lists.llvm.org
Fri Oct 27 18:16:08 PDT 2017
On 25 October 2017 at 07:33, Mário Feroldi via cfe-dev <
cfe-dev at lists.llvm.org> wrote:
> Following compilation shows the issue:
>
> $ clang++ --version
> clang version 6.0.0 (trunk 316414)
> Target: x86_64-unknown-linux-gnu
> Thread model: posix
> InstalledDir: /opt/compiler-explorer/clang-trunk/bin
>
> $ cat a.cpp
> template <typename T>
> struct S
> {
> template <typename U>
> S(U&&) {}
> };
>
> template <typename T>
> S(T) -> S<T>;
>
> int main()
> {
> S s(42);
> }
>
> $ clang++ -std=c++17 -Wundefined-func-template a.cpp
> a.cpp:13:7: warning: instantiation of function '<deduction guide for
> S><int>' required here, but no definition is available
> [-Wundefined-func-template]
> S s(42);
> ^
> a.cpp:9:1: note: forward declaration of template entity is here
> S(T) -> S<T>;
> ^
> a.cpp:13:7: note: add an explicit instantiation declaration to
> suppress this warning if '<deduction guide for S><int>' is explicitly
> instantiated in another translation unit
> S s(42);
> ^
>
> I found out that this warning occurs at lib/Sema/SemaTemplateInstantia
> teDecl.cpp:3809:
>
> else if (TSK == TSK_ImplicitInstantiation) { //< here
> if (AtEndOfTU && !getDiagnostics().hasErrorOccurred()) {
> Diag(PointOfInstantiation, diag::warn_func_template_missing)
> << Function;
> Diag(PatternDecl->getLocation(), diag::note_forward_template_de
> cl);
> if (getLangOpts().CPlusPlus11)
> Diag(PointOfInstantiation, diag::note_inst_declaration_hint)
> << Function;
> }
> }
>
> Shouldn't that check whether it's a deduction guide, or should it even
> require a definition?
>
Thanks for the report, we shouldn't even be trying to instantiate a
definition for a deduction guide in the first place. Fixed in r316820.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171027/291f7b98/attachment.html>
More information about the cfe-dev
mailing list