[llvm-bugs] [Bug 38294] compilation error when parameters have certain complexity

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jul 25 07:32:11 PDT 2018


David Blaikie <dblaikie at gmail.com> changed:

           What    |Removed                     |Added
         Resolution|---                         |INVALID
                 CC|                            |dblaikie at gmail.com,
                   |                            |richard-llvm at metafoo.co.uk
             Status|NEW                         |RESOLVED

--- Comment #1 from David Blaikie <dblaikie at gmail.com> ---
Richard can correct me if I'm wrong here, but I think this code is invalid,
though no diagnostic is required.

The complexity of the code doesn't seem to matter to Clang rejecting this and
GCC accepting it. I could maintain that invariant (using GCC 8.1 at least - I
don't have a dev revision of GCC built) while reducing the test down to:

class foo {
  void operator+(const foo &x) const;
template <int footemplate> void foo_function(foo A, foo B) { A + B; }

Once 'foo_function' isn't a template (or if that template is instantiated in
any way) GCC also rejects this.

C++ doesn't require the compiler to diagnose these sort of cases of invalid
non-dependent expressions - Clang does, GCC doesn't, those are both acceptable
implementations. It'd be a minor quality-of-implementation improvement if GCC
rejected this, since all instantiations of the template are invalid.

You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180725/be4cfc35/attachment-0001.html>

More information about the llvm-bugs mailing list