// -*- C++ -*-
//===------------------------------ chrono ---------------------------------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef _LIBCPP_EXPERIMENTAL_CHRONO
#define _LIBCPP_EXPERIMENTAL_CHRONO

/**
    experimental/chrono synopsis

// C++1y

#include <chrono>

namespace std {
namespace chrono {
namespace experimental {
inline namespace fundamentals_v1 {

  // See C++14 20.12.4, customization traits
  template <class Rep> constexpr bool treat_as_floating_point_v
    = treat_as_floating_point<Rep>::value;

} // namespace fundamentals_v1
} // namespace experimental
} // namespace chrono
} // namespace std

 */

#include <experimental/__config>
#include <chrono>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
#pragma GCC system_header
#endif

#if _LIBCPP_STD_VER > 11

_LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS

#ifndef _LIBCPP_HAS_NO_VARIABLE_TEMPLATES

template <class _Rep> _LIBCPP_CONSTEXPR bool treat_as_floating_point_v
    = treat_as_floating_point<_Rep>::value;

#endif /* _LIBCPP_HAS_NO_VARIABLE_TEMPLATES */

_LIBCPP_END_NAMESPACE_CHRONO_LFTS

#endif /* _LIBCPP_STD_VER > 11 */

#endif /* _LIBCPP_EXPERIMENTAL_CHRONO */
