<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Issue 840: pair default template argument</title>
<meta property="og:title" content="Issue 840: pair default template argument">
<meta property="og:description" content="C++ library issue. Status: NAD">
<meta property="og:url" content="https://cplusplus.github.io/LWG/issue840.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#NAD">NAD</a> status.</em></p>
<h3 id="840"><a href="lwg-closed.html#840">840</a>. <code>pair</code> default template argument</h3>
<p><b>Section:</b> 22.3 <a href="https://wg21.link/pairs">[pairs]</a> <b>Status:</b> <a href="lwg-active.html#NAD">NAD</a>
 <b>Submitter:</b> Thorsten Ottosen <b>Opened:</b> 2008-05-23 <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#pairs">issues</a> in [pairs].</p>
<p><b>View all issues with</b> <a href="lwg-status.html#NAD">NAD</a> status.</p>
<p><b>Discussion:</b></p>
<p>
I have one issue with <code>std::pair</code>. Well, it might just be a very annoying
historical accident, but why is there no default template argument for
the second template argument? This is so annoying when the type in
question is looong and hard to write (type deduction with <code>auto</code> won't
help those cases where we use it as a return or argument type).
</p>


<p id="res-840"><b>Proposed resolution:</b></p>
<p>
Change the synopsis in 22.2 <a href="https://wg21.link/utility">[utility]</a> to read:
</p>

<blockquote><pre>
template &lt;class T1, class T2 <ins>= T1</ins>&gt; struct pair;
</pre></blockquote>

<p>
Change 22.3 <a href="https://wg21.link/pairs">[pairs]</a> to read:
</p>

<blockquote><pre>
namespace std {
 template &lt;class T1, class T2 <ins>= T1</ins>&gt;
 struct pair {
   typedef T1 first_type;
   typedef T2 second_type;
   ...
</pre></blockquote>


<p><b>Rationale:</b></p><p>
<code>std::pair</code> is a heterogeneous container.
</p>




</body>
</html>
