   __host__ __device__
   void operator()() const {}
 };
+
+
+template<class T>
+struct container
+{
+  template<class Shape>
+  __host__ __device__
+  container(const Shape&);
+
+  template<class Index>
+  __host__ __device__
+  T& operator[](const Index&);
+};
+
 
 int main()
 {

#include <agency/cuda/grid_executor.hpp>
#include <agency/executor_traits.hpp>
#include <iostream>

struct functor_returning_void
{

    "grid_executor should have multi-agent then_execute() returning void"
  );

  static_assert(
    agency::detail::new_executor_traits_detail::has_multi_agent_then_execute_with_shared_inits_returning_user_specified_container<container<int>, executor_type, functor_returning_int, int_future_type, int, int>::value,
    "grid_executor should have multi-agent then_execute() with shared inits returning user-specified container"
  );

  std::cout << "OK" << std::endl;

  return 0;
