https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92040
Bug ID: 92040 Summary: Type requirements don't appear to work when a type doesn't exist. Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: cjdb.ns at gmail dot com Target Milestone: --- Created attachment 47011 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47011&action=edit Requested file # GCC version g++ (GCC) 10.0.0 20191009 (experimental) # System type Ubuntu on WSL No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 19.04 Release: 19.04 Codename: disco # GCC built with export CC=/usr/bin/clang-9 export CXX=/usr/bin/clang++-9 export CFLAGS='-w -O3 -DNDEBUG -g0 -fdiagnostics-color=always -fuse-ld=lld' export CXXFLAGS='-w -O3 -DNDEBUG -g0 -fdiagnostics-color=always -fuse-ld=lld' export LDFLAGS='-fuse-ld=lld' ../gcc/configure --enable-languages=c,c++ \ --disable-bootstrap \ --disable-libada \ --disable-libgomp \ --disable-libquadmath \ --disable-libquadmath-support \ --disable-multilib \ --disable-nls \ --disable-werror make -j6 sudo make install-strip -j6 # Minimal repro ```cpp template<typename T> constexpr void example() { constexpr auto result = requires { typename T::value_type; }; static_assert(not result); } int main() { struct s{}; example<s>(); } ``` Built using: /usr/local/bin/g++ -std=c++2a test.cpp # Diagnostic ``` test.cpp: In instantiation of 'constexpr void example() [with T = main()::s]': test.cpp:11:15: required from here test.cpp:4:49: error: no type named 'value_type' in 'struct main()::s' 4 | constexpr auto result = requires { typename T::value_type; }; | ```