<!doctype html>
<html lang="en">
  <head>
    <title>
              SD-8: Standard Library Compatibility : 
            Standard C++
    </title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="/favicon.ico" rel="shortcut icon">
    <link rel="apple-touch-icon" href="apple-touch-icon-57.png">
    <link rel="apple-touch-icon" sizes="72x72" href="apple-touch-icon-72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="apple-touch-icon-114.png">
    <link rel="apple-touch-icon" sizes="144x144" href="apple-touch-icon-144.png">
    <link href="https://fonts.googleapis.com/css?family=Crimson+Text|Roboto|Roboto+Condensed:400,700&display=swap" rel="stylesheet">
    <link href="/assets/css/app.css?v012" rel="stylesheet" media="all" type="text/css">
    <link href="/assets/css/prettify.css" rel="stylesheet" media="all" type="text/css">

    <script type="text/javascript" src="/assets/js/prettify.min.js"></script>    
  </head>
  
  <body class="hide-sidebar">
    <div id="root">
    
      <div id="crown">
        <a id="sidebar-toggle" href="#sidebar">Show sidebar &raquo;</a>
        <ul class="user">
                          <li><a href="https://isocpp.org/member/login">Sign In / Suggest an Article</a></li>
          <li><a href="https://isocpp.org/member/register">Register</a></li>
                </ul>
      </div>

      <header id="top" role="banner">
        <div class="container">
          <h1>
            <a href="https://isocpp.org/"><img src="/assets/images/cpp_logo.png" alt="Standard C++"></a>
          </h1>
          <nav role="navigation">
            <ul id="nav-sub">
<li class="first"><a href="https://isocpp.org/get-started">Get Started!</a></li>
<li><a href="https://isocpp.org/tour">Tour</a></li>
<li><a href="https://isocpp.org/guidelines">Core Guidelines</a></li>
<li><a href="https://isocpp.org/faq">Super-FAQ</a></li>
<li class="parent-here"><a href="https://isocpp.org/std">Standardization</a></li>
<li class="last"><a href="https://isocpp.org/about">About</a></li>
</ul>
          </nav>
          <form action="/search/google">
            <input type="text" name="q" id="q" maxlength="100" value="" class="textbox">
            <input type="submit" value="Search" class="button">
          </form>
          <!--
          <form method="post" action="https://isocpp.org/"  >
<div class='hiddenFields'>
<input type="hidden" name="ACT" value="6" />
<input type="hidden" name="XID" value="8c0deeda5c6a1a3df92c2a1628146b7c41ec66b9" />
<input type="hidden" name="RES" value="" />
<input type="hidden" name="meta" value="YTo5OntzOjY6InN0YXR1cyI7czowOiIiO3M6NzoiY2hhbm5lbCI7czoxOToiYmxvZ3xwYWdlc3xmYXF8d2lraSI7czo4OiJjYXRlZ29yeSI7czowOiIiO3M6OToic2VhcmNoX2luIjtzOjEwOiJldmVyeXdoZXJlIjtzOjU6IndoZXJlIjtzOjM6ImFsbCI7czoxMjoic2hvd19leHBpcmVkIjtzOjA6IiI7czoxOToic2hvd19mdXR1cmVfZW50cmllcyI7YjowO3M6MTE6InJlc3VsdF9wYWdlIjtzOjE0OiJzZWFyY2gvcmVzdWx0cyI7czoxNToibm9fcmVzdWx0c19wYWdlIjtzOjE3OiJzZWFyY2gvbm9fcmVzdWx0cyI7fTNkZmE5MTM0YzRkODdjNWE2MDc5Y2YxZjA5OGYxOTRh" />
<input type="hidden" name="site_id" value="1" />
</div>


            <input type="text" name="keywords" id="keywords" maxlength="100" value="M50o93H7pQ09L8X1t49cHY01Z5j4TT91fGfr" class="textbox">
            <input type="submit" value="Search" class="button">
          </form>
          -->
        </div>
      </header>

      <div id="content" class="hide-sidebar" role="main">
        <div class="container">


<div id="sidebar">
        <section>
              <header>Features</header>
            <div class="sidebar-section-content prettify">
        <p>
	<a href="https://isocpp.org/std/status">Current ISO C++ status</a></p>
<p>
	&nbsp;</p>
<p>
	<a href="https://isocpp.org/std/standing-documents">ISO C++ standing documents</a></p>
<p>
	&nbsp;</p>
<p>
	<a href="https://isocpp.org/std/meetings-and-participation/upcoming-meetings">Upcoming ISO C++ meetings</a></p>
<p>
	&nbsp;</p>
<p>
	<a href="https://isocpp.org/wiki/faq/conferences-worldwide">Upcoming C++ conferences</a></p>
<p>
	&nbsp;</p>
<p>
	<a href="http://en.cppreference.com/w/cpp/compiler_support">Compiler conformance status</a></p>
      </div>
    </section>
  
  
  <nav>
    <section>
      <header>
        <a href="https://isocpp.org/std/">Standardization</a>
      </header>
      <ul id="nav-sub">
<li class="first"><a href="https://isocpp.org/std/the-standard">The Standard</a></li>
<li><a href="https://isocpp.org/std/the-committee">The Committee</a></li>
<li><a href="https://isocpp.org/std/meetings-and-participation">Meetings and Participation</a></li>
<li><a href="https://isocpp.org/std/status">Current Status</a></li>
<li><a href="https://isocpp.org/std/submit-issue">How To Submit a New Issue / Defect Report</a></li>
<li><a href="https://isocpp.org/std/submit-a-proposal">How To Submit a Proposal</a></li>
<li><a href="https://isocpp.org/std/the-life-of-an-iso-proposal">The life of an ISO proposal: From "cool idea" to "international standard"</a></li>
<li><a href="https://isocpp.org/std/library-design-guidelines">Library Design Guidelines</a></li>
<li class="parent-here"><a href="https://isocpp.org/std/standing-documents">Standing Documents</a>
<ul>
<li class="first"><a href="https://isocpp.org/std/standing-documents/sd-3-study-group-organizational-information">SD-3: Study Group Organizational Information</a></li>
<li><a href="https://isocpp.org/std/standing-documents/sd-4-wg21-practices-and-procedures">SD-4: WG21 Practices and Procedures</a></li>
<li><a href="https://isocpp.org/std/standing-documents/sd-5-meeting-information">SD-5: Meeting Information</a></li>
<li><a href="https://isocpp.org/std/standing-documents/sd-6-sg10-feature-test-recommendations">SD-FeatureTest: Feature-Test Macros and Policies</a></li>
<li><a href="https://isocpp.org/std/standing-documents/sd-7-mailing-procedures-and-how-to-write-papers">SD-7: Mailing Procedures and How to Write Papers</a></li>
<li class="here"><a href="https://isocpp.org/std/standing-documents/sd-8-standard-library-compatibility">SD-8: Standard Library Compatibility</a></li>
<li><a href="https://isocpp.org/std/standing-documents/sd-9-library-evolution-policies">SD-9: Library Evolution Policies</a></li>
<li class="last"><a href="https://isocpp.org/std/standing-documents/sd-10-language-evolution-principles">SD-10: Language Evolution (EWG) Principles</a></li>
</ul>
</li>
<li><a href="https://isocpp.org/std/iso-iec-jtc1-procedures">ISO/IEC JTC1 Procedures</a></li>
<li class="last"><a href="https://isocpp.org/std/forums">Forums</a></li>
</ul>
    </section>
  </nav>
    
      <section>
              <header>Upcoming Events</header>
            <div class="sidebar-section-content">
        <p>
	<strong><a href="http://italiancpp.github.io/cppday25">C++ Day 2025</a></strong></p>
<p>
	October 25, Pavia, Italy</p>
<p>
	&nbsp;</p>
<p>
	<a href="https://meetingcpp.com/2025/"><strong>Meeting C++ 2025</strong></a></p>
<p>
	November 6-8, Berlin, Germany</p>
<p>
	&nbsp;</p>
<p>
	<a href="https://isocpp.org/files/papers/N4977.pdf"><strong>ISO C++ standards meeting</strong></a></p>
<p>
	November 3-8, Kona, HI, USA</p>
      </div>
    </section>
  
</div>

<div id="mainbar">

  <header>
    <div class="breadcrumbs">
      <a href="https://isocpp.org">Home</a> &raquo; <a href="https://isocpp.org/std/">Standardization</a> &raquo; <a href="https://isocpp.org/std/standing-documents/">Standing Documents</a> &raquo; <span class="last">SD-8: Standard Library Compatibility</span>
    </div>
    
      

      <h2>SD-8: Standard Library Compatibility</h2>
    </header>

        
    <article class="prettify">
      
        <table border="1">
	<tbody>
		<tr>
			<th>
				Doc. No.:</th>
			<td>
				SD-8</td>
		</tr>
		<tr>
			<th>
				Date:</th>
			<td>
				2020-03-08</td>
		</tr>
		<tr>
			<th>
				Reply to:</th>
			<td>
				Bryce Lelbach</td>
		</tr>
	</tbody>
</table>
<h1>
	Standard Library Compatibility</h1>
<p>
	For a sufficiently clever user, effectively any change we make to the standard library will be a breaking change. In a few instances, the standard itself is clear about what users are not allowed to do ("do not take the address of member functions of standard types", "do not add new names into namespace std") - those restrictions are not widely understood, are incomplete, and leave completely unclear why those rules are in place. In keeping with general discussions of&nbsp; compatibility, and as mentioned in <a href="http://wg21.link/P0684">P0684</a>, we should be clear to users about what does and does not constitute supported use of the C++ standard library. What rights does the committee reserve in order to make changes to the standard library in the future?</p>
<p>
	Note in particular that users of the standard are not special in this: abuse of these rules is generally bad usage for most libraries.</p>
<h2>
	Rights the Standard Library Reserves for Itself</h2>
<p>
	Primarily, the standard reserves the right to:</p>
<ul>
	<li>
		Add new names to namespace std, to any namespace reserved for future standardization (for example std2; see [namespace.future] for more details), and to any sub-namespaces of those namespaces</li>
	<li>
		Add new names to any entity within any reserved namespace, including but not limited to<br />
		o Functions (this includes new member functions and overloads to existing functions)<br />
		o Enumerations<br />
		o Namespaces<br />
		o Aliases (using, typedef, etc.)<br />
		o Classes (struct/class/union)<br />
		o Concepts<br />
		o Variables</li>
	<li>
		Add new default arguments to functions and templates</li>
	<li>
		Change return-types of functions in compatible ways (void to anything, numeric types in a widening fashion, etc).</li>
	<li>
		Make changes to existing interfaces in a fashion that will be backward compatible, if those interfaces are solely used to instantiate types and invoke functions. Implementation details (the primary name of a type, the implementation details for a function callable) may not be depended upon.</li>
</ul>
      
      
            
          </article>
    

    
  <footer>
    
    
    <div class="back-to-top">
      <a href="#">Back to Top</a>
    </div>
  </footer>

</div>

        </div>
        
        <div id="root-footer"></div>
      </div>
    </div>

    <footer id="bottom" role="contentinfo">
      <div class="container">
        &copy; <a href="/home/terms-of-use">Copyright</a> 2025 Standard C++ Foundation. 
        All rights reserved.
        <ul id="nav-sub">
<li class="first"><a href="https://isocpp.org/home/terms-of-use">Terms of Use</a></li>
<li class="last"><a href="https://isocpp.org/home/privacy-policy">Privacy Policy</a></li>
</ul>
        <br>Hosted by <a href="https://m.do.co/c/32f291566cf7" target="_blank">DigitalOcean</a>
        , supported by <a href="https://princexml.com/" target="_blank">Prince XML</a>
      </div>
    </footer>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="https://isocpp.org/javascript/jquery.min"><\/script>')</script>
    <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script>
    <script>window.jQuery.ui || document.write('<script src="https://isocpp.org/javascript/jquery-ui.min"><\/script>')</script>
    
    <script type="text/javascript" charset="utf-8" src="https://isocpp.org/?ACT=comment_editor"></script>
    <script type="text/javascript">
	        					$(document).ready(function() {
									$("*[id^=likee_]").click(function(){
										var ids = $(this).attr("id").split("_");
										if (ids[1]=="c"){
											id=ids[2];
											c="c_";
											isCom="true";
										} else {
											id=ids[1];
											c="";
											isCom="false";
										}
										
										$.ajax({
	   										type: "POST",
	   										url: "/std/standing-documents/sd-8-standard-library-compatibility",
	   										data: "likee=true&entry_id="+id+"&isCom="+isCom,
	   										success: function(msg){
	     										//alert( "Data Saved: " + msg );
	   										}
	 									});
	 									
	 									$(this).replaceWith("<strong>"+$(this).html()+"</strong>");
	 									$("#dislikee_"+c+id).replaceWith("<span>"+$("#dislikee_"+c+id).html()+"</span>");
	 									$("#scoreeCount_"+c+id).html(parseInt($("#scoreeCount_"+c+id).html())+1);
	 									$("#likeeCount_"+c+id).html(parseInt($("#likeeCount_"+c+id).html())+1);
	 									$("#likeeReplace_"+c+id).replaceWith("");
	 									$("#likeeShow_"+c+id).replaceWith($("#likeeShow_"+c+id).html());
									});
									
									$("*[id^=dislikee_]").click(function(){
										var ids = $(this).attr("id").split("_");
										if (ids[1]=="c"){
											id=ids[2];
											c="c_";
											isCom="true";
										} else {
											id=ids[1];
											c="";
											isCom="false";
										}
										$.ajax({
	   										type: "POST",
	   										url: "/std/standing-documents/sd-8-standard-library-compatibility",
	   										data: "dislikee=true&entry_id="+id+"&isCom="+isCom,
	   										success: function(msg){
	     										//alert( "Data Saved: " + msg );
	   										}
	 									});
	 									
	 									$(this).replaceWith("<strong>"+$(this).html()+"</strong>");
	 									$("#likee_"+c+id).replaceWith("<span>"+$("#likee_"+c+id).html()+"</span>");
	 									$("#scoreeCount_"+c+id).html(parseInt($("#scoreeCount_"+c+id).html())-1);
	 									$("#dislikeeCount_"+c+id).html(parseInt($("#dislikeeCount_"+c+id).html())+1);
	 									$("#likeeReplace_"+c+id).replaceWith("");
	 									$("#likeeShow_"+c+id).replaceWith($("#likeeShow_"+c+id).html());
									});
								
								});	
	        			  </script>
    
    <script type="text/javascript" src="/js/isocpp.lib.min.js"></script>
    <script type="text/javascript" src="/js/global.js"></script>

        
    <script type="text/javascript">
      $("#top nav a").each(function() {
        var aSeg1 = $(this).attr("href").replace("http://", "").replace("https://", "").split("/")[1];
        if (aSeg1 == "std") {$(this).parent().addClass("here");}
      });
    </script>

  </body>
</html>
