diff --git a/include/exec/__detail/__atomic_intrusive_queue.hpp b/include/exec/__detail/__atomic_intrusive_queue.hpp index 8b8beee19..0d69a1b20 100644 --- a/include/exec/__detail/__atomic_intrusive_queue.hpp +++ b/include/exec/__detail/__atomic_intrusive_queue.hpp @@ -18,6 +18,8 @@ #include "../../stdexec/__detail/__intrusive_queue.hpp" +#include + namespace exec { template class __atomic_intrusive_queue; diff --git a/include/exec/__detail/__basic_sequence.hpp b/include/exec/__detail/__basic_sequence.hpp index c0767c169..0c19a35e4 100644 --- a/include/exec/__detail/__basic_sequence.hpp +++ b/include/exec/__detail/__basic_sequence.hpp @@ -16,10 +16,12 @@ */ #pragma once -#include "../sequence_senders.hpp" - +#include "../../stdexec/__detail/__config.hpp" +#include "../../stdexec/__detail/__meta.hpp" #include "../../stdexec/__detail/__basic_sender.hpp" +#include "../sequence_senders.hpp" + namespace exec { ////////////////////////////////////////////////////////////////////////////////////////////////// // __seqexpr diff --git a/include/exec/__detail/__bit_cast.hpp b/include/exec/__detail/__bit_cast.hpp index 04e0734fc..1b7d71dc4 100644 --- a/include/exec/__detail/__bit_cast.hpp +++ b/include/exec/__detail/__bit_cast.hpp @@ -16,6 +16,8 @@ */ #pragma once +#include "../../stdexec/__detail/__config.hpp" + #if __has_include() #include #if __cpp_lib_bit_cast >= 201806L @@ -26,8 +28,6 @@ #include #include -#include "../../stdexec/__detail/__config.hpp" - namespace exec { template diff --git a/include/exec/__detail/__bwos_lifo_queue.hpp b/include/exec/__detail/__bwos_lifo_queue.hpp index 1c924609f..6f535af84 100644 --- a/include/exec/__detail/__bwos_lifo_queue.hpp +++ b/include/exec/__detail/__bwos_lifo_queue.hpp @@ -20,6 +20,7 @@ #include #include +#include #include #include #include diff --git a/include/exec/__detail/__manual_lifetime.hpp b/include/exec/__detail/__manual_lifetime.hpp index 509cf9784..88e67d15b 100644 --- a/include/exec/__detail/__manual_lifetime.hpp +++ b/include/exec/__detail/__manual_lifetime.hpp @@ -16,6 +16,8 @@ */ #pragma once +#include +#include #include namespace exec { diff --git a/include/exec/__detail/__sender_facade.hpp b/include/exec/__detail/__sender_facade.hpp index dbacdd39c..3934c27e9 100644 --- a/include/exec/__detail/__sender_facade.hpp +++ b/include/exec/__detail/__sender_facade.hpp @@ -16,6 +16,7 @@ #pragma once #include "../../stdexec/execution.hpp" +#include "../../stdexec/concepts.hpp" STDEXEC_PRAGMA_PUSH() STDEXEC_PRAGMA_IGNORE_EDG(1302) diff --git a/include/exec/any_sender_of.hpp b/include/exec/any_sender_of.hpp index ba84d4112..729148470 100644 --- a/include/exec/any_sender_of.hpp +++ b/include/exec/any_sender_of.hpp @@ -15,10 +15,14 @@ */ #pragma once +#include "../stdexec/concepts.hpp" #include "../stdexec/execution.hpp" +#include "../stdexec/functional.hpp" + #include "./sequence_senders.hpp" #include +#include namespace exec { namespace __any { diff --git a/include/exec/async_scope.hpp b/include/exec/async_scope.hpp index 9efa24bd5..1b818035c 100644 --- a/include/exec/async_scope.hpp +++ b/include/exec/async_scope.hpp @@ -16,9 +16,12 @@ #pragma once #include "../stdexec/execution.hpp" +#include "../stdexec/stop_token.hpp" #include "../stdexec/__detail/__intrusive_queue.hpp" #include "env.hpp" +#include + namespace exec { ///////////////////////////////////////////////////////////////////////////// // async_scope diff --git a/include/exec/finally.hpp b/include/exec/finally.hpp index b34331ff4..66550cee1 100644 --- a/include/exec/finally.hpp +++ b/include/exec/finally.hpp @@ -17,6 +17,7 @@ #pragma once #include "../stdexec/execution.hpp" +#include "../stdexec/concepts.hpp" #include "__detail/__manual_lifetime.hpp" diff --git a/include/exec/linux/memory_mapped_region.hpp b/include/exec/linux/memory_mapped_region.hpp index d3c82ebdc..080dcfcfc 100644 --- a/include/exec/linux/memory_mapped_region.hpp +++ b/include/exec/linux/memory_mapped_region.hpp @@ -16,6 +16,7 @@ */ #pragma once +#include #include namespace exec { diff --git a/include/exec/materialize.hpp b/include/exec/materialize.hpp index 11ebe9ef0..d75bb719a 100644 --- a/include/exec/materialize.hpp +++ b/include/exec/materialize.hpp @@ -16,7 +16,9 @@ */ #pragma once -#include +#include "../stdexec/execution.hpp" +#include "../stdexec/concepts.hpp" + namespace exec { namespace __materialize { diff --git a/include/exec/on_coro_disposition.hpp b/include/exec/on_coro_disposition.hpp index 6ccd8c3b7..14c45668f 100644 --- a/include/exec/on_coro_disposition.hpp +++ b/include/exec/on_coro_disposition.hpp @@ -18,14 +18,15 @@ // The original idea is taken from libunifex and adapted to stdexec. -#include -#include - #include "../stdexec/execution.hpp" +#include "../stdexec/coroutine.hpp" #include "task.hpp" #include "inline_scheduler.hpp" #include "any_sender_of.hpp" +#include +#include + namespace exec { namespace __on_coro_disp { using namespace stdexec; diff --git a/include/exec/repeat_n.hpp b/include/exec/repeat_n.hpp index e19094d5d..205a0df1a 100644 --- a/include/exec/repeat_n.hpp +++ b/include/exec/repeat_n.hpp @@ -28,6 +28,7 @@ #include #include +#include namespace exec { namespace __repeat_n { diff --git a/include/exec/sequence/any_sequence_of.hpp b/include/exec/sequence/any_sequence_of.hpp index 87997a940..19f2da046 100644 --- a/include/exec/sequence/any_sequence_of.hpp +++ b/include/exec/sequence/any_sequence_of.hpp @@ -16,6 +16,9 @@ */ #pragma once +#include "../../stdexec/concepts.hpp" +#include "../../stdexec/execution.hpp" +#include "../sequence_senders.hpp" #include "../any_sender_of.hpp" namespace exec { diff --git a/include/exec/sequence/empty_sequence.hpp b/include/exec/sequence/empty_sequence.hpp index cc8d6b8c2..8ddd8aec5 100644 --- a/include/exec/sequence/empty_sequence.hpp +++ b/include/exec/sequence/empty_sequence.hpp @@ -16,6 +16,8 @@ */ #pragma once +#include "../../stdexec/concepts.hpp" +#include "../../stdexec/execution.hpp" #include "../sequence_senders.hpp" namespace exec { diff --git a/include/exec/sequence/ignore_all_values.hpp b/include/exec/sequence/ignore_all_values.hpp index f2a7110d5..e15e04d57 100644 --- a/include/exec/sequence/ignore_all_values.hpp +++ b/include/exec/sequence/ignore_all_values.hpp @@ -16,8 +16,12 @@ */ #pragma once +#include "../../stdexec/concepts.hpp" +#include "../../stdexec/execution.hpp" #include "../sequence_senders.hpp" +#include + namespace exec { template concept __variant_emplaceable = requires(_Variant& __v, _Args&&... __args) { diff --git a/include/exec/sequence/iterate.hpp b/include/exec/sequence/iterate.hpp index 8532af0e7..2fc41f438 100644 --- a/include/exec/sequence/iterate.hpp +++ b/include/exec/sequence/iterate.hpp @@ -20,14 +20,18 @@ #if STDEXEC_HAS_STD_RANGES() +#include "../../stdexec/concepts.hpp" +#include "../../stdexec/execution.hpp" #include "../sequence_senders.hpp" #include "../__detail/__basic_sequence.hpp" #include "../env.hpp" #include "../trampoline_scheduler.hpp" +#include #include + namespace exec { namespace __iterate { using namespace stdexec; diff --git a/include/exec/sequence/transform_each.hpp b/include/exec/sequence/transform_each.hpp index 57473cc67..aa91ebf5b 100644 --- a/include/exec/sequence/transform_each.hpp +++ b/include/exec/sequence/transform_each.hpp @@ -16,6 +16,8 @@ */ #pragma once +#include "../../stdexec/concepts.hpp" +#include "../../stdexec/execution.hpp" #include "../sequence_senders.hpp" #include "../__detail/__basic_sequence.hpp" diff --git a/include/exec/static_thread_pool.hpp b/include/exec/static_thread_pool.hpp index e34fa0dc1..6c5a30403 100644 --- a/include/exec/static_thread_pool.hpp +++ b/include/exec/static_thread_pool.hpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include diff --git a/include/exec/timed_scheduler.hpp b/include/exec/timed_scheduler.hpp index 38a03e5dc..92f68581a 100644 --- a/include/exec/timed_scheduler.hpp +++ b/include/exec/timed_scheduler.hpp @@ -17,6 +17,7 @@ #pragma once #include "../stdexec/execution.hpp" +#include "../stdexec/functional.hpp" namespace exec { namespace __now { diff --git a/include/exec/trampoline_scheduler.hpp b/include/exec/trampoline_scheduler.hpp index 87070a02e..7e7bb7862 100644 --- a/include/exec/trampoline_scheduler.hpp +++ b/include/exec/trampoline_scheduler.hpp @@ -17,6 +17,7 @@ #pragma once #include "../stdexec/execution.hpp" +#include "../stdexec/stop_token.hpp" #include #include diff --git a/include/exec/when_any.hpp b/include/exec/when_any.hpp index be74de113..29ac9b30a 100644 --- a/include/exec/when_any.hpp +++ b/include/exec/when_any.hpp @@ -16,7 +16,11 @@ */ #pragma once -#include +#include "../stdexec/execution.hpp" +#include "../stdexec/stop_token.hpp" + +#include +#include namespace exec { namespace __when_any { diff --git a/include/stdexec/__detail/__basic_sender.hpp b/include/stdexec/__detail/__basic_sender.hpp index 765e9e702..8124b25cd 100644 --- a/include/stdexec/__detail/__basic_sender.hpp +++ b/include/stdexec/__detail/__basic_sender.hpp @@ -17,6 +17,7 @@ #include "__execution_fwd.hpp" +#include "__config.hpp" #include "__env.hpp" #include "__meta.hpp" #include "__tuple.hpp" @@ -25,6 +26,8 @@ #include "../concepts.hpp" #include // for tuple_size/tuple_element +#include +#include namespace stdexec { ///////////////////////////////////////////////////////////////////////////// diff --git a/include/stdexec/__detail/__domain.hpp b/include/stdexec/__detail/__domain.hpp index 51c6ba85f..1545b6885 100644 --- a/include/stdexec/__detail/__domain.hpp +++ b/include/stdexec/__detail/__domain.hpp @@ -17,6 +17,7 @@ #include "__execution_fwd.hpp" +#include "__config.hpp" #include "__basic_sender.hpp" #include "__env.hpp" #include "__meta.hpp" diff --git a/include/stdexec/__detail/__env.hpp b/include/stdexec/__detail/__env.hpp index aa619ae6c..f354bde0b 100644 --- a/include/stdexec/__detail/__env.hpp +++ b/include/stdexec/__detail/__env.hpp @@ -15,15 +15,19 @@ */ #pragma once -#include - #include "__execution_fwd.hpp" +#include "__config.hpp" +#include "__meta.hpp" #include "__concepts.hpp" #include "../functional.hpp" #include "../stop_token.hpp" +#include +#include +#include + STDEXEC_PRAGMA_PUSH() STDEXEC_PRAGMA_IGNORE_EDG(probable_guiding_friend) STDEXEC_PRAGMA_IGNORE_EDG(type_qualifiers_ignored_on_reference) diff --git a/include/stdexec/__detail/__intrusive_ptr.hpp b/include/stdexec/__detail/__intrusive_ptr.hpp index e769fda1b..13d4c2aa3 100644 --- a/include/stdexec/__detail/__intrusive_ptr.hpp +++ b/include/stdexec/__detail/__intrusive_ptr.hpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #if STDEXEC_TSAN() #include diff --git a/include/stdexec/__detail/__intrusive_queue.hpp b/include/stdexec/__detail/__intrusive_queue.hpp index 44cbcf8c7..4f95c04f1 100644 --- a/include/stdexec/__detail/__intrusive_queue.hpp +++ b/include/stdexec/__detail/__intrusive_queue.hpp @@ -16,12 +16,13 @@ */ #pragma once +#include "__config.hpp" + +#include #include #include #include -#include "__config.hpp" - namespace stdexec { namespace __queue { template diff --git a/include/stdexec/__detail/__scope.hpp b/include/stdexec/__detail/__scope.hpp index 9baf0fe50..b4c214e57 100644 --- a/include/stdexec/__detail/__scope.hpp +++ b/include/stdexec/__detail/__scope.hpp @@ -15,6 +15,7 @@ */ #pragma once +#include "__config.hpp" #include "__meta.hpp" namespace stdexec { diff --git a/include/stdexec/__detail/__tuple.hpp b/include/stdexec/__detail/__tuple.hpp index 0c11e1750..5a081b7a7 100644 --- a/include/stdexec/__detail/__tuple.hpp +++ b/include/stdexec/__detail/__tuple.hpp @@ -16,8 +16,11 @@ #pragma once #include "__config.hpp" +#include "__type_traits.hpp" #include "__meta.hpp" +#include + namespace stdexec { namespace __tup { template diff --git a/include/stdexec/concepts.hpp b/include/stdexec/concepts.hpp index 7e77280ad..57e665222 100644 --- a/include/stdexec/concepts.hpp +++ b/include/stdexec/concepts.hpp @@ -19,6 +19,11 @@ #error This library requires support for C++20 concepts #endif +#include "__detail/__config.hpp" +#include "__detail/__meta.hpp" +#include "__detail/__concepts.hpp" +#include "__detail/__type_traits.hpp" + #include // Perhaps the stdlib lacks support for concepts though: @@ -34,8 +39,6 @@ #include #endif -#include "__detail/__meta.hpp" -#include "__detail/__concepts.hpp" namespace stdexec::__std_concepts { // Make sure we're using a same_as concept that doesn't instantiate std::is_same diff --git a/include/stdexec/coroutine.hpp b/include/stdexec/coroutine.hpp index ad79d4ffd..a6c3ff142 100644 --- a/include/stdexec/coroutine.hpp +++ b/include/stdexec/coroutine.hpp @@ -17,6 +17,9 @@ #include "concepts.hpp" +#include "__detail/__config.hpp" +#include "__detail/__concepts.hpp" + #include #if __cpp_impl_coroutine >= 201902 && __cpp_lib_coroutine >= 201902 #include diff --git a/include/stdexec/execution.hpp b/include/stdexec/execution.hpp index 3c15a4bfe..7125e8745 100644 --- a/include/stdexec/execution.hpp +++ b/include/stdexec/execution.hpp @@ -15,21 +15,10 @@ */ #pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include "__detail/__execution_fwd.hpp" +#include "__detail/__config.hpp" +#include "__detail/__type_traits.hpp" #include "__detail/__env.hpp" #include "__detail/__domain.hpp" #include "__detail/__intrusive_ptr.hpp" @@ -37,11 +26,28 @@ #include "__detail/__scope.hpp" #include "__detail/__basic_sender.hpp" #include "__detail/__utility.hpp" + #include "functional.hpp" #include "concepts.hpp" #include "coroutine.hpp" #include "stop_token.hpp" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + STDEXEC_PRAGMA_PUSH() STDEXEC_PRAGMA_IGNORE_GNU("-Wundefined-inline") STDEXEC_PRAGMA_IGNORE_GNU("-Wsubobject-linkage") diff --git a/include/stdexec/functional.hpp b/include/stdexec/functional.hpp index 1d243b4c0..2537c9cbb 100644 --- a/include/stdexec/functional.hpp +++ b/include/stdexec/functional.hpp @@ -15,12 +15,14 @@ */ #pragma once -#include "__detail/__meta.hpp" #include "__detail/__config.hpp" +#include "__detail/__meta.hpp" #include "concepts.hpp" #include #include +#include +#include namespace stdexec::__std_concepts { #if STDEXEC_HAS_STD_CONCEPTS_HEADER() diff --git a/include/stdexec/stop_token.hpp b/include/stdexec/stop_token.hpp index 46b26b1d9..dc8586d8b 100644 --- a/include/stdexec/stop_token.hpp +++ b/include/stdexec/stop_token.hpp @@ -16,19 +16,21 @@ */ #pragma once +#include "concepts.hpp" +#include "__detail/__config.hpp" + #include #include #include #include #include #include +#include #if __has_include() && __cpp_lib_jthread >= 201911 #include #endif -#include "concepts.hpp" -#include "__detail/__config.hpp" namespace stdexec { // [stoptoken.inplace], class in_place_stop_token