xref: /llvm-project/clang/test/SemaCXX/coroutine-traits-undefined-template.cpp (revision ec117158a390a0ebf64377caa5abd0c976df8f7a)
1 // This file contains references to sections of the Coroutines TS, which can be
2 // found at http://wg21.link/coroutines.
3 
4 // RUN: %clang_cc1 -std=c++20 -verify %s -fcxx-exceptions -fexceptions -Wunused-result
5 
6 namespace std {
7 
8 template<typename ...T>
9 struct coroutine_traits {
10   struct promise_type {};
11 };
12 
13 template <> struct coroutine_traits<void>; // expected-note {{forward declaration of 'std::coroutine_traits<void>'}}
14 } // namespace std
15 
uses_forward_declaration()16 void uses_forward_declaration() {
17   co_return; // expected-error {{this function cannot be a coroutine: missing definition of specialization 'coroutine_traits<void>'}}
18 }
19