// RUN: %clang_cc1 -std=c++1z -fcoroutines-ts -verify %s -fcxx-exceptions -fexceptions -triple x86_64-windows-msvc -fms-extensions
namespacestd::experimental{template<typename... T>structcoroutine_traits;// expected-note@-1{{declared here}}
template<class Promise =void>structcoroutine_handle{coroutine_handle()=default;static coroutine_handle from_address(void*)noexcept;};template<>structcoroutine_handle<void>{static coroutine_handle from_address(void*)noexcept;coroutine_handle()=default;template<class PromiseType>coroutine_handle(coroutine_handle<PromiseType>)noexcept;};}// namespace std::experimental
structsuspend_always{boolawait_ready()noexcept;voidawait_suspend(std::experimental::coroutine_handle<>)noexcept;voidawait_resume()noexcept;};template<>structstd::experimental::coroutine_traits<void>{structpromise_type{voidget_return_object()noexcept;
suspend_always initial_suspend()noexcept;
suspend_always final_suspend()noexcept;voidreturn_void()noexcept;voidunhandled_exception()noexcept;};};voidSEH_used(){
__try {// expected-error {{cannot use SEH '__try' in a coroutine when C++ exceptions are enabled}}
co_return;// expected-note {{function is a coroutine due to use of 'co_return' here}}
// expected-warning@-1 {{support for std::experimental::coroutine_traits will be removed}}
}__except(0){}}