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

            Bug ID: 82047
           Summary: non-existent variable template used to initialize
                    variable
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: john at mcfarlane dot name
  Target Milestone: ---

The following code compiles:

template<typename T> struct S {};
template<typename T> constexpr T v;
constexpr auto c = v<S<void>>;

The result is a variable of type `struct S<void>` which appears to be
value-initialized.

Expected: 
Compiler emits an error for `c` because there is no such variable as `v` of `S`
of `void` (or `v` of anything else for that matter).

Command:
g++ file.cpp -std=c++17

Version:
Observed in 7.1, 7.2 and 8.0 on Wandbox and in 7.1 on Ubuntu 16.04:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/home/local/ANT/johmcfj/gcc/libexec/gcc/x86_64-pc-linux-gnu/7.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /home/local/ANT/johmcfj/Downloads/gcc-7.1.0/./configure
--disable-multilib --prefix=/home/local/ANT/johmcfj/gcc/
--enable-languages=c,c++,lto
Thread model: posix
gcc version 7.1.0 (GCC)

Reply via email to