chromium/ui/accessibility/platform/inspect/ax_optional.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_ACCESSIBILITY_PLATFORM_INSPECT_AX_OPTIONAL_H_
#define UI_ACCESSIBILITY_PLATFORM_INSPECT_AX_OPTIONAL_H_

#include <string>

#include "base/component_export.h"
#include "build/build_config.h"
#include "third_party/abseil-cpp/absl/types/variant.h"

// Used for template specialization.
template <typename T>
struct is_variant : std::false_type {};
is_variant<absl::variant<Args...>>;
is_variant_v;

namespace ui {

// Implements stateful value_s. Similar to std::optional, but multi-state
// allowing nullable value_s.
template <typename ValueType>
class COMPONENT_EXPORT(AX_PLATFORM) AXOptional final {};

}  // namespace ui

#endif  // UI_ACCESSIBILITY_PLATFORM_INSPECT_AX_OPTIONAL_H_