<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 1410: Add a feature-detect macro for monotonic_clock</title>
<meta property="og:title" content="Issue 1410: Add a feature-detect macro for monotonic_clock">
<meta property="og:description" content="C++ library issue. Status: Resolved">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue1410.html">
<meta property="og:type" content="website">
<meta property="og:image" content="http://cplusplus.github.io/LWG/images/cpp_logo.png">
<meta property="og:image:alt" content="C++ logo">
<style>
  p {text-align:justify}
  li {text-align:justify}
  pre code.backtick::before { content: "`" }
  pre code.backtick::after { content: "`" }
  blockquote.note
  {
    background-color:#E0E0E0;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 1px;
    padding-bottom: 1px;
  }
  ins {background-color:#A0FFA0}
  del {background-color:#FFA0A0}
  table.issues-index { border: 1px solid; border-collapse: collapse; }
  table.issues-index th { text-align: center; padding: 4px; border: 1px solid; }
  table.issues-index td { padding: 4px; border: 1px solid; }
  table.issues-index td:nth-child(1) { text-align: right; }
  table.issues-index td:nth-child(2) { text-align: left; }
  table.issues-index td:nth-child(3) { text-align: left; }
  table.issues-index td:nth-child(4) { text-align: left; }
  table.issues-index td:nth-child(5) { text-align: center; }
  table.issues-index td:nth-child(6) { text-align: center; }
  table.issues-index td:nth-child(7) { text-align: left; }
  table.issues-index td:nth-child(5) span.no-pr { color: red; }
  @media (prefers-color-scheme: dark) {
     html {
        color: #ddd;
        background-color: black;
     }
     ins {
        background-color: #225522
     }
     del {
        background-color: #662222
     }
     a {
        color: #6af
     }
     a:visited {
        color: #6af
     }
     blockquote.note
     {
        background-color: rgba(255, 255, 255, .10)
     }
  }
</style>
</head>
<body>
<hr>
<p><em>This page is a snapshot from the LWG issues list, see the <a href="lwg-active.html">Library Active Issues List</a> for more information and the meaning of <a href="lwg-active.html#Resolved">Resolved</a> status.</em></p>
<h3 id="1410"><a href="lwg-defects.html#1410">1410</a>. Add a feature-detect macro for <code>monotonic_clock</code></h3>
<p><b>Section:</b> 99 [time.clock.monotonic] <b>Status:</b> <a href="lwg-active.html#Resolved">Resolved</a>
 <b>Submitter:</b> BSI <b>Opened:</b> 2010-08-25 <b>Last modified:</b> 2016-01-28</p>
<p><b>Priority: </b>Not Prioritized
</p>
<p><b>View all other</b> <a href="lwg-index.html#time.clock.monotonic">issues</a> in [time.clock.monotonic].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#Resolved">Resolved</a> status.</p>
<p><b>Duplicate of:</b> <a href="lwg-closed.html#1411" title="Add a compile-time flag to detect monotonic_clock (Status: Dup)">1411</a></p>
<p><b>Discussion:</b></p>
<p><b>Addresses GB-107, DE-20</b></p>
<p>
4.1 <a href="https://wg21.link/intro.compliance">[intro.compliance]</a> p.9 states that which conditionally
supported constructs are available should be provided in the 
documentation for the implementation. This doesn't help programmers trying
to write portable code, as they must then rely on
implementation-specific means to determine the
availability of such constructs. In particular, the presence
or absence of <code>std::chrono::monotonic_clock</code> may require
different code paths to be selected. This is the only
conditionally-supported library facility, and differs from the
conditionally-supported language facilities in that it has
standard-defined semantics rather than implementation-defined
semantics.
</p>

<p><i>[
Resolution proposed in ballot comment:
]</i></p>

<p>
Provide feature test macro for determining the
presence of <code>std::chrono::monotonic_clock</code>. Add
<code>_STDCPP_HAS_MONOTONIC_CLOCK</code> to the
<code>&lt;chrono&gt;</code> header, which is defined if
<code>monotonic_clock</code> is present, and not defined if it is
not present.
</p>

<p><i>[
2010-11-01 Daniel comments:
]</i></p>

<blockquote><p>
Paper <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3128.html">n3128</a> addresses
this issue by replacing <code>monotonic_clock</code> with <code>steady_clock</code>, which is not conditionally supported,
so there is no need to detect it.
</p></blockquote>



<p id="res-1410"><b>Proposed resolution:</b></p><p>
This is resolved by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3191.htm">n3191</a>.
</p>




</body>
</html>
