// Copyright 2023 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <memory>
#include <tuple>
#include <type_traits>

void SendableCompileTimeTests() {
  // Test that |std::is_invocable| can figure out move-only type requirements.
  // |async_patterns::BindForSending| relies on this kind of check so we should
  // make sure it works. See `sendable.h` for details.
  auto move_only_sink = [](std::unique_ptr<int>) {};
  static_assert(std::is_invocable_v<decltype(move_only_sink), std::unique_ptr<int>>);
  static_assert(!std::is_invocable_v<decltype(move_only_sink), std::unique_ptr<int>&>);
}
