CINXE.COM
C++/CLI: Difference between revisions - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>C++/CLI: Difference between revisions - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy" ,"wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"0384dfd6-47a8-44f4-858a-ab81322a3c5a","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"C++/CLI","wgTitle":"C++/CLI","wgCurRevisionId":1258635354,"wgRevisionId":1258635354,"wgArticleId":1957924,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Wikipedia introduction cleanup from March 2015","All pages needing cleanup","Articles covered by WikiProject Wikify from March 2015","All articles covered by WikiProject Wikify","Articles with example C++ code",".NET programming languages","C++ programming language family","Ecma standards","Microsoft Visual Studio"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName": "C++/CLI","wgRelevantArticleId":1957924,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"extRevisionSliderTimeOffset":0,"wgDiffOldId":1002916712,"wgDiffNewId":1258635354,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1022268", "wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.visualEditor.diffPage.init.styles":"ready","oojs-ui.styles.icons-accessibility":"ready","oojs-ui.styles.icons-editing-advanced":"ready","oojs-ui-core.styles":"ready","oojs-ui.styles.indicators":"ready","mediawiki.widgets.styles":"ready","oojs-ui-core.icons":"ready","ext.RevisionSlider.lazyCss":"ready","mediawiki.interface.helpers.styles":"ready","mediawiki.diff.styles":"ready","ext.cite.styles":"ready","ext.pygments":"ready","mediawiki.helplink":"ready","skins.vector.search.codex.styles":"ready", "skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.visualEditor.diffPage.init","ext.RevisionSlider.lazyJs","mediawiki.diff","ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints", "ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.RevisionSlider.lazyCss%7Cext.cite.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.visualEditor.diffPage.init.styles%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cmediawiki.diff.styles%7Cmediawiki.helplink%7Cmediawiki.interface.helpers.styles%7Cmediawiki.widgets.styles%7Coojs-ui-core.icons%2Cstyles%7Coojs-ui.styles.icons-accessibility%2Cicons-editing-advanced%2Cindicators%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="C++/CLI: Difference between revisions - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/C%2B%2B/CLI"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=C%2B%2B/CLI&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/C%2B%2B/CLI"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="mw-article-diff skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-C_CLI rootpage-C_CLI skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=C%2B%2B%2FCLI&returntoquery=diff%3D1258635354%26oldid%3D1002916712" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=C%2B%2B%2FCLI&returntoquery=diff%3D1258635354%26oldid%3D1002916712" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=C%2B%2B%2FCLI&returntoquery=diff%3D1258635354%26oldid%3D1002916712" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=C%2B%2B%2FCLI&returntoquery=diff%3D1258635354%26oldid%3D1002916712" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Syntax_changes" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Syntax_changes"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Syntax changes</span> </div> </a> <button aria-controls="toc-Syntax_changes-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Syntax changes subsection</span> </button> <ul id="toc-Syntax_changes-sublist" class="vector-toc-list"> <li id="toc-Handles" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Handles"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Handles</span> </div> </a> <ul id="toc-Handles-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Tracking_references" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Tracking_references"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Tracking references</span> </div> </a> <ul id="toc-Tracking_references-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Finalizers_and_automatic_variables" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Finalizers_and_automatic_variables"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>Finalizers and automatic variables</span> </div> </a> <ul id="toc-Finalizers_and_automatic_variables-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Operator_overloading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Operator_overloading"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Operator overloading</span> </div> </a> <ul id="toc-Operator_overloading-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Interoperability" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Interoperability"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Interoperability</span> </div> </a> <ul id="toc-Interoperability-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-C++/CX" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#C++/CX"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>C++/CX</span> </div> </a> <ul id="toc-C++/CX-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading">C++/CLI: Difference between revisions</h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 12 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-12" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">12 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%B3%D9%8A%2B%2B/%D8%B3%D9%8A_%D8%A5%D9%84_%D8%A2%D9%8A" title="سي++/سي إل آي – Arabic" lang="ar" hreflang="ar" data-title="سي++/سي إل آي" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Czech" lang="cs" hreflang="cs" data-title="C++/CLI" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – German" lang="de" hreflang="de" data-title="C++/CLI" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%B3%DB%8C%E2%80%8C%D9%BE%D9%84%D8%A7%D8%B3%E2%80%8C%D9%BE%D9%84%D8%A7%D8%B3/%D8%B3%DB%8C%E2%80%8C%D8%A7%D9%84%E2%80%8C%D8%A2%DB%8C" title="سیپلاسپلاس/سیالآی – Persian" lang="fa" hreflang="fa" data-title="سیپلاسپلاس/سیالآی" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Korean" lang="ko" hreflang="ko" data-title="C++/CLI" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Italian" lang="it" hreflang="it" data-title="C++/CLI" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Japanese" lang="ja" hreflang="ja" data-title="C++/CLI" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Polish" lang="pl" hreflang="pl" data-title="C++/CLI" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Portuguese" lang="pt" hreflang="pt" data-title="C++/CLI" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Russian" lang="ru" hreflang="ru" data-title="C++/CLI" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Ukrainian" lang="uk" hreflang="uk" data-title="C++/CLI" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/C%2B%2B/CLI" title="C++/CLI – Chinese" lang="zh" hreflang="zh" data-title="C++/CLI" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1022268#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/C%2B%2B/CLI" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:C%2B%2B/CLI" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/C%2B%2B/CLI"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/C%2B%2B/CLI"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/C%2B%2B/CLI" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/C%2B%2B/CLI" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&oldid=1258635354" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=C%2B%2B%2FCLI&id=1258635354&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DC%252B%252B%2FCLI%26diff%3D1258635354%26oldid%3D1002916712"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DC%252B%252B%2FCLI%26diff%3D1258635354%26oldid%3D1002916712"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=C%2B%2B%2FCLI&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B/CLI&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1022268" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> <div id="mw-indicator-mw-helplink" class="mw-indicator"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Diff" target="_blank" class="mw-helplink"><span class="mw-helplink-icon"></span>Help</a></div> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-revslider-container"><span style='width: 100%; text-align: center;' id='ooui-php-1' class='mw-revslider-toggle-button oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-frameless oo-ui-indicatorElement oo-ui-labelElement oo-ui-buttonWidget' data-ooui='{"_":"OO.ui.ButtonWidget","rel":["nofollow"],"framed":false,"indicator":"down","label":"Browse history interactively","title":"Open revision slider","classes":["mw-revslider-toggle-button"]}'><a role='button' title='Open revision slider' tabindex='0' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-iconElement-noIcon'></span><span class='oo-ui-labelElement-label'>Browse history interactively</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicator-down'></span></a></span><div class="mw-revslider-slider-wrapper" style="display: none;"><div class="mw-revslider-placeholder"><div class="mw-revslider-spinner"><div class="mw-revslider-bounce"></div></div></div></div></div><div class="mw-diff-revision-history-links"><a href="/w/index.php?title=C%2B%2B/CLI&diff=prev&oldid=1002916712" class="mw-diff-revision-history-link-previous" title="C++/CLI">← Previous edit</a></div><div class="mw-diff-table-prefix" dir="ltr" lang="en"><div class="mw-diff-inline-legend oo-ui-element-hidden"><span class="mw-diff-inline-legend-del">Content deleted</span> <span class="mw-diff-inline-legend-ins">Content added</span></div><div class="ve-init-mw-diffPage-diffMode"><span class='oo-ui-widget oo-ui-widget-enabled oo-ui-buttonGroupWidget'><span aria-disabled='true' class='oo-ui-widget oo-ui-widget-disabled oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-iconElement oo-ui-labelElement oo-ui-buttonWidget'><a role='button' tabindex='-1' aria-disabled='true' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-icon-eye oo-ui-image-invert'></span><span class='oo-ui-labelElement-label'>Visual</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator oo-ui-image-invert'></span></a></span><span class='oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-iconElement oo-ui-labelElement oo-ui-buttonWidget oo-ui-buttonElement-active'><a role='button' tabindex='0' rel='nofollow' class='oo-ui-buttonElement-button'><span class='oo-ui-iconElement-icon oo-ui-icon-wikiText oo-ui-image-invert'></span><span class='oo-ui-labelElement-label'>Wikitext</span><span class='oo-ui-indicatorElement-indicator oo-ui-indicatorElement-noIndicator oo-ui-image-invert'></span></a></span></span></div><div class="mw-diffPage-inlineToggle-container"><div id='mw-diffPage-inline-toggle-switch-layout' class='oo-ui-layout oo-ui-labelElement oo-ui-fieldLayout oo-ui-fieldLayout-align-left' data-ooui='{"_":"OO.ui.FieldLayout","fieldWidget":{"tag":"mw-diffPage-inline-toggle-switch"},"$overlay":true,"label":"Inline","title":"Switches between inline format and two-column format"}'><div class='oo-ui-fieldLayout-body'><span class='oo-ui-fieldLayout-header'><label title='Switches between inline format and two-column format' id='ooui-php-2' class='oo-ui-labelElement-label'>Inline</label></span><div class='oo-ui-fieldLayout-field'><div id='mw-diffPage-inline-toggle-switch' title='Switches between inline format and two-column format' aria-checked='false' tabindex='0' role='switch' aria-labelledby='ooui-php-2' class='oo-ui-widget oo-ui-widget-enabled oo-ui-toggleWidget oo-ui-toggleWidget-off oo-ui-toggleSwitchWidget' data-ooui='{"_":"OO.ui.ToggleSwitchWidget","href":"\/w\/index.php?title=C%2B%2B\/CLI&diff=1258635354&oldid=1002916712&diff-type=inline","value":false,"title":"Switches between inline format and two-column format"}'><span class='oo-ui-toggleSwitchWidget-glow'></span><a href='/w/index.php?title=C%2B%2B/CLI&diff=1258635354&oldid=1002916712&diff-type=inline'><span class='oo-ui-toggleSwitchWidget-grip'></span></a></div></div></div></div></div></div><table class="diff diff-type-table diff-contentalign-left diff-editfont-monospace" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="en"> <td colspan="2" class="diff-otitle diff-side-deleted"><div id="mw-diff-otitle1"><strong><a href="/w/index.php?title=C%2B%2B/CLI&oldid=1002916712" title="C++/CLI">Revision as of 16:43, 26 January 2021</a> <span class="mw-diff-edit"><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&oldid=1002916712" title="C++/CLI">edit</a></span><span class="mw-diff-timestamp" data-timestamp="2021-01-26T16:43:35Z"></span></strong></div><div id="mw-diff-otitle2"><a href="/wiki/User:Jarble" class="mw-userlink" title="User:Jarble" data-mw-revid="1002916712"><bdi>Jarble</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:Jarble" class="mw-usertoollinks-talk" title="User talk:Jarble">talk</a> | <a href="/wiki/Special:Contributions/Jarble" class="mw-usertoollinks-contribs" title="Special:Contributions/Jarble">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"><a href="/wiki/Wikipedia:Autopatrolled" title="Wikipedia:Autopatrolled">Autopatrolled</a>, <a href="/wiki/Wikipedia:Extended_confirmed_editors" class="mw-redirect" title="Wikipedia:Extended confirmed editors">Extended confirmed users</a></div><div class="mw-diff-usereditcount"><span>149,595</span> edits</div></div></div><div id="mw-diff-otitle3"><abbr class="minoredit" title="This is a minor edit">m</abbr> <span class="comment comment--without-parentheses">linking</span></div><div id="mw-diff-otitle5"></div><div id="mw-diff-otitle4"><a href="/w/index.php?title=C%2B%2B/CLI&diff=prev&oldid=1002916712" title="C++/CLI" id="differences-prevlink">← Previous edit</a></div></td> <td colspan="2" class="diff-ntitle diff-side-added"><div id="mw-diff-ntitle1"><strong><a href="/w/index.php?title=C%2B%2B/CLI&oldid=1258635354" title="C++/CLI">Latest revision as of 20:00, 20 November 2024</a> <span class="mw-diff-edit"><a href="/w/index.php?title=C%2B%2B/CLI&action=edit" title="C++/CLI">edit</a></span><span class="mw-diff-timestamp" data-timestamp="2024-11-20T20:00:10Z"></span> <span class="mw-diff-undo"><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&undoafter=1002916712&undo=1258635354" title=""Undo" reverts this edit and opens the edit form in preview mode. It allows adding a reason in the summary.">undo</a></span></strong></div><div id="mw-diff-ntitle2"><a href="/wiki/User:Citation_bot" class="mw-userlink" title="User:Citation bot" data-mw-revid="1258635354"><bdi>Citation bot</bdi></a> <span class="mw-usertoollinks">(<a href="/wiki/User_talk:Citation_bot" class="mw-usertoollinks-talk" title="User talk:Citation bot">talk</a> | <a href="/wiki/Special:Contributions/Citation_bot" class="mw-usertoollinks-contribs" title="Special:Contributions/Citation bot">contribs</a>)</span><div class="mw-diff-usermetadata"><div class="mw-diff-userroles"><a href="/wiki/Wikipedia:Bots" title="Wikipedia:Bots">Bots</a></div><div class="mw-diff-usereditcount"><span>5,344,122</span> edits</div></div></div><div id="mw-diff-ntitle3"> <span class="comment comment--without-parentheses">Removed parameters. | <a href="/wiki/Wikipedia:UCB" class="mw-redirect" title="Wikipedia:UCB">Use this bot</a>. <a href="/wiki/Wikipedia:DBUG" class="mw-redirect" title="Wikipedia:DBUG">Report bugs</a>. | Suggested by Whoop whoop pull up | <a href="/wiki/Category:.NET_programming_languages" title="Category:.NET programming languages">Category:.NET programming languages</a> | #UCB_Category 23/33</span></div><div id="mw-diff-ntitle5"></div><div id="mw-diff-ntitle4"> </div></td> </tr><tr><td colspan="4" class="diff-multi" lang="en">(17 intermediate revisions by 16 users not shown)</td></tr><tr> <td colspan="2" class="diff-lineno">Line 1:</td> <td colspan="2" class="diff-lineno">Line 1:</td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{Short description|Programming language}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{lead too short|date=March 2015}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{lead too short|date=March 2015}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{Infobox programming language</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{Infobox programming language</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 8:</td> <td colspan="2" class="diff-lineno">Line 9:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| designer = [[Microsoft]]</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| designer = [[Microsoft]]</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| developer = Microsoft</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| developer = Microsoft</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>| latest release version = <del class="diffchange diffchange-inline">Standard ECMA-372</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>| latest release version = </div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>| latest release date = <del class="diffchange diffchange-inline">{{Start date and age|2005|12}}</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>| latest release date = </div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| typing =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| typing =</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| implementations =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| implementations =</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 18:</td> <td colspan="2" class="diff-lineno">Line 19:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| license =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| license =</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| file_ext =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| file_ext =</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>| website = {{URL|<del class="diffchange diffchange-inline">http</del>://<del class="diffchange diffchange-inline">www</del>.<del class="diffchange diffchange-inline">ecma-international</del>.<del class="diffchange diffchange-inline">org</del>/<del class="diffchange diffchange-inline">publications</del>/<del class="diffchange diffchange-inline">standards</del>/<del class="diffchange diffchange-inline">Ecma</del>-<del class="diffchange diffchange-inline">372.htm</del>}}</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>| website = {{URL|<ins class="diffchange diffchange-inline">https</ins>://<ins class="diffchange diffchange-inline">docs</ins>.<ins class="diffchange diffchange-inline">microsoft</ins>.<ins class="diffchange diffchange-inline">com</ins>/<ins class="diffchange diffchange-inline">en-us</ins>/<ins class="diffchange diffchange-inline">cpp</ins>/<ins class="diffchange diffchange-inline">dotnet/dotnet</ins>-<ins class="diffchange diffchange-inline">programming-with-cpp-cli-visual-cpp</ins>}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| wikibooks =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| wikibooks =</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>| versions =</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>| versions =</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>'''C++/CLI''' is a variant of the [[C++]] [[programming language]], modified for [[Common Language Infrastructure]]. It has been part of [[Visual Studio]] 2005 and later, and provides interoperability with other [[.NET]] languages such as [[C Sharp (programming language)|C#]]. Microsoft created C++/CLI to supersede [[Managed Extensions for C++]]. In December 2005, [[Ecma International]] published C++/CLI specifications as the '''ECMA-372''' standard.<ref>{{cite web |title=ECMA-372 |url=https://www.ecma-international.org/publications-and-standards/standards/ecma-372/ |website=ecma-international.org |publisher=[[Ecma International]] |archive-url=https://web.archive.org/web/20080810165757/http://www.ecma-international.org/publications/standards/Ecma-372.htm |archive-date=10 August 2008 |date=December 2005}}</ref></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>'''C++/CLI''' (C++ modified for [[Common Language Infrastructure]]) is a language specification created by [[Microsoft]] which supersedes [[Managed Extensions for C++]]. It is a complete revision that simplifies the now-deprecated Managed C++ syntax<ref>[http://msdn.microsoft.com/en-us/library/b23b94s7.aspx Managed Extensions for C++ Syntax Upgrade Checklist - MSDN Library]</ref> and provides interoperability with Microsoft .NET languages such as [[C Sharp (programming language)|C#]]. C++/CLI was standardized by [[Ecma International|Ecma]] as '''ECMA-372'''. It is currently available in [[Visual Studio]] 2005, 2008, 2010, 2012, 2013, 2015, 2017 and 2019 including the Express editions.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>==Syntax changes==</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>==Syntax changes==</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 33:</td> <td colspan="2" class="diff-lineno">Line 34:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>===Tracking references===</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>===Tracking references===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>A '''tracking reference''' in C++/CLI is a handle of a passed-by-reference variable. It is similar in concept to using <del class="diffchange diffchange-inline">"</del>{{Cpp|*&}}<del class="diffchange diffchange-inline">"</del> (reference to a pointer) in standard C++, and (in function declarations) corresponds to the <del class="diffchange diffchange-inline">"</del>{{Cpp|ref}}<del class="diffchange diffchange-inline">"</del> keyword applied to types in C#, or <del class="diffchange diffchange-inline">"</del>{{Cpp|ByRef}}<del class="diffchange diffchange-inline">"</del> in [[Visual Basic .NET]]. C++/CLI uses a <del class="diffchange diffchange-inline">"</del>{{Cpp|^%}}<del class="diffchange diffchange-inline">"</del> syntax to indicate a tracking reference to a handle.</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>A '''tracking reference''' in C++/CLI is a handle of a passed-by-reference variable. It is similar in concept to using {{Cpp|*&}} (reference to a pointer) in standard C++, and (in function declarations) corresponds to the {{Cpp|ref}} keyword applied to types in C#, or {{Cpp|ByRef}} in [[Visual Basic .NET]]. C++/CLI uses a {{Cpp|^%}} syntax to indicate a tracking reference to a handle.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>The following code shows an example of the use of tracking references. Replacing the tracking reference with a regular handle variable would leave the resulting string array with 10 uninitialized string handles, as only copies of the string handles in the array would be set, due to <del class="diffchange diffchange-inline">their</del> being passed by value rather than by reference.</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>The following code shows an example of the use of tracking references. Replacing the tracking reference with a regular handle variable would leave the resulting string array with 10 uninitialized string handles, as only copies of the string handles in the array would be set, due to <ins class="diffchange diffchange-inline">them</ins> being passed by value rather than by reference.</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div><syntaxhighlight lang=Cpp></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div><syntaxhighlight lang=Cpp></div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>int main()</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>int main()</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 49:</td> <td colspan="2" class="diff-lineno">Line 50:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div></syntaxhighlight></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div></syntaxhighlight></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><br /></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>Note that this would be illegal in C#, which does not allow {{Cpp|foreach}} loops to pass values by reference. Hence, a workaround would be required.</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>===Finalizers and automatic variables===</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>===Finalizers and automatic variables===</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 95:</td> <td colspan="2" class="diff-lineno">Line 94:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div></syntaxhighlight></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div></syntaxhighlight></div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>==<del class="diffchange diffchange-inline">C++/C# </del>Interoperability==</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>==Interoperability==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>C++/CLI allows C++ programs to consume C# programs in C# DLLs.<ref>[https://docs.microsoft.com/en-us/cpp/dotnet/using-cpp-interop-implicit-pinvoke?view=vs-2019 Using C++ Interop (Implicit PInvoke)]</ref> Here the #using keyword shows the compiler where the DLL is located for its compilation metadata. This simple example requires no data [[Marshalling (computer science)<del class="diffchange diffchange-inline"> </del>|<del class="diffchange diffchange-inline"> </del>marshalling]].</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>C++/CLI allows C++ programs to consume C# programs in C# DLLs.<ref>[https://docs.microsoft.com/en-us/cpp/dotnet/using-cpp-interop-implicit-pinvoke?view=vs-2019 Using C++ Interop (Implicit PInvoke)]</ref> Here the #using keyword shows the compiler where the DLL is located for its compilation metadata. This simple example requires no data [[Marshalling (computer science)|marshalling]].</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div><syntaxhighlight lang=Cpp></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div><syntaxhighlight lang=Cpp></div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>#include "stdafx.h"</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>#include "stdafx.h"</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 107:</td> <td colspan="2" class="diff-lineno">Line 106:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div></syntaxhighlight></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div></syntaxhighlight></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>The C# source code content of MyCS.<del class="diffchange diffchange-inline">DLL</del>.</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>The C# source code content of MyCS.<ins class="diffchange diffchange-inline">dll</ins>.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><syntaxhighlight lang=<del class="diffchange diffchange-inline">CSharp</del>></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><syntaxhighlight lang=<ins class="diffchange diffchange-inline">"csharp"</ins>></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>namespace MyCS<del class="diffchange diffchange-inline"> {</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>namespace MyCS<ins class="diffchange diffchange-inline">;</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> public class Class1 {</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> <del class="diffchange diffchange-inline"> </del> public static double add(double a, double b) {</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">public</ins> <ins class="diffchange diffchange-inline">class</ins> <ins class="diffchange diffchange-inline">Class1</ins> <ins class="diffchange diffchange-inline">{</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> public static double add(double a, double b) {</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del> return a + b;</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return a + b;</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> }</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> }</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> }</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>}</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 137:</td> <td colspan="2" class="diff-lineno">Line 136:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div></syntaxhighlight></div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div></syntaxhighlight></div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>The C# code is not in any way C++-aware.</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>The C# code is not in any way C++-aware.</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><syntaxhighlight lang=<del class="diffchange diffchange-inline">CSharp</del>></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><syntaxhighlight lang=<ins class="diffchange diffchange-inline">"csharp"</ins>></div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>namespace MyCS<del class="diffchange diffchange-inline"> {</del></div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>namespace MyCS<ins class="diffchange diffchange-inline">;</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> public class Class1 {</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> <del class="diffchange diffchange-inline"> </del> public static string process(string a) {</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div><ins class="diffchange diffchange-inline">public</ins> <ins class="diffchange diffchange-inline">class</ins> <ins class="diffchange diffchange-inline">Class1</ins> <ins class="diffchange diffchange-inline">{</ins></div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> public static string process(string a) {</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div><del class="diffchange diffchange-inline"> </del> return a.Replace("cat", "dog") + " with a tail";</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div> return a.Replace("cat", "dog") + " with a tail";</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div> }</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div> }</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div> }</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>}</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Line 152:</td> <td colspan="2" class="diff-lineno">Line 151:</td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>==References==</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>==References==</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>{{<del class="diffchange diffchange-inline">reflist</del>}}</div></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{<ins class="diffchange diffchange-inline">Reflist</ins>}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><br /></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>==Further reading==</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{refbegin}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Cite web |first1=Herb |last1=Sutter |author-link1=Herb Sutter |url=https://docs.microsoft.com/en-us/archive/blogs/hsutter/ccli-keywords-under-the-hood |title=C++/CLI keywords: Under the hood |website=Herb Sutter's Blog |publisher=[[Microsoft]] |date=23 November 2003 |archive-url=https://web.archive.org/web/20071109130154/http://blogs.msdn.com/hsutter/archive/2003/11/23/53519.aspx |archive-date=9 November 2007}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Cite web |first1=Herb |last1=Sutter |author-link1=Herb Sutter |url=http://www.gotw.ca/publications/C++CLIRationale.pdf |title=A Design Rationale for C++/CLI |publisher=[[WP:SPS|Self-published]] |date=24 February 2006}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Cite web |first1=Bjarne |last1=Stroustrup |author-link1=Bjarne Stroustrup |url=https://www.stroustrup.com/bs_faq.html#CppCLI |title=What do you think of C++/CLI? |work=Bjarne Stroustrup's FAQ |publisher=[[WP:SPS|Self-published]] |date=23 July 2021}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Cite journal |first1=Stanley |last1=Lippman |author-link1=Stanley B. Lippman |title=Pure C++: Hello, C++/CLI |journal=[[MSDN Magazine]] |volume=21 |number=3 |publisher=[[Microsoft]] |archive-url=https://web.archive.org/web/20080205003004/http://msdn.microsoft.com/msdnmag/issues/06/00/PureC/default.aspx |archive-date=5 February 2008 |url=https://docs.microsoft.com/en-us/archive/msdn-magazine/2006/vs-2005-guided-tour/pure-c-hello-c-cli}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Cite web |first1=Stanley |last1=Lippman |author-link1=Stanley B. Lippman |title=Why C++/CLI Supports both Templates for CLI Types and the CLI Generic Mechanism |website=Stan Lippman's BLog |publisher=[[Microsoft]] |date=5 August 2004 |archive-url=https://web.archive.org/web/20071007030053/http://blogs.msdn.com/slippman/archive/2004/08/05/209606.aspx |archive-date=7 October 2007 |url=https://docs.microsoft.com/en-us/archive/blogs/slippman/why-c-supports-both-class-and-typename-for-type-parameters}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{refend}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>==External links==</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>==External links==</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* {{Official website|https://docs.microsoft.com/en-us/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp}}</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [https://web.archive.org/web/20080810165757/http://www.ecma-international.org/publications/standards/Ecma-372.htm ECMA 372: C++/CLI Language Specification]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>* [https://patents.google.com/patent/US7496889B2/en Patent regarding whitespace in keywords]</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [[Herb Sutter]]: [https://web.archive.org/web/20071109130154/http://blogs.msdn.com/hsutter/archive/2003/11/23/53519.aspx C++/CLI keywords: Under the hood]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [[Herb Sutter]]: [http://www.gotw.ca/publications/C++CLIRationale.pdf C++/CLI Rationale]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [https://web.archive.org/web/20080919084608/http://msdn.microsoft.com/en-us/library/xey702bw.aspx MSDN documentation for C++/CLI]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [http://appft1.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PG01&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.html&r=1&f=G&l=50&s1=%2220060089942%22.PGNR.&OS=DN/20060089942&RS=DN/20060089942 Patent application regarding whitespace in keywords]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [http://www.stroustrup.com/bs_faq.html#CppCLI Bjarne Stroustrup's (designer/author of C++) views on C++/CLI]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [[Stanley B. Lippman]]: [https://web.archive.org/web/20080205003004/http://msdn.microsoft.com/msdnmag/issues/06/00/PureC/default.aspx Hello, C++/CLI]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td class="diff-deletedline diff-side-deleted"><div>* [[Stanley B. Lippman]]: [https://web.archive.org/web/20071007030053/http://blogs.msdn.com/slippman/archive/2004/08/05/209606.aspx Why C++/CLI Supports both Templates for CLI Types and the CLI Generic Mechanism]</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{Common Language Infrastructure}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{Common Language Infrastructure}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{Ecma International Standards}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{Ecma International Standards}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{C++ programming language}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{C++ programming language}}</div></td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td class="diff-addedline diff-side-added"><div>{{Authority control}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><br /></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td class="diff-context diff-side-deleted"><div>{{DEFAULTSORT:C++ CLI}}</div></td> <td class="diff-marker"></td> <td class="diff-context diff-side-added"><div>{{DEFAULTSORT:C++ CLI}}</div></td> </tr> </table><hr class='diff-hr' id='mw-oldid' /> <h2 class='diff-currentversion-title'>Latest revision as of 20:00, 20 November 2024</h2> <div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Programming language</div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Lead_too_short plainlinks metadata ambox ambox-content ambox-lead_too_short" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Wiki_letter_w.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/40px-Wiki_letter_w.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/60px-Wiki_letter_w.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/6/6c/Wiki_letter_w.svg/80px-Wiki_letter_w.svg.png 2x" data-file-width="44" data-file-height="44" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article's <a href="/wiki/Wikipedia:Manual_of_Style/Lead_section#Length" title="Wikipedia:Manual of Style/Lead section">lead section</a> <b>may be too short to adequately <a href="/wiki/Wikipedia:Summary_style" title="Wikipedia:Summary style">summarize</a> the key points</b>.<span class="hide-when-compact"> Please consider expanding the lead to <a href="/wiki/Wikipedia:Manual_of_Style/Lead_section#Provide_an_accessible_overview" title="Wikipedia:Manual of Style/Lead section">provide an accessible overview</a> of all important aspects of the article.</span> <span class="date-container"><i>(<span class="date">March 2015</span>)</i></span></div></td></tr></tbody></table> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox vevent"><caption class="infobox-title summary">C++/CLI</caption><tbody><tr><th scope="row" class="infobox-label"><a href="/wiki/Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="/wiki/Structured_programming" title="Structured programming">Structured</a>, <a href="/wiki/Imperative_programming" title="Imperative programming">imperative</a>, <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented</a></td></tr><tr><th scope="row" class="infobox-label">Family</th><td class="infobox-data"><a href="/wiki/List_of_C-family_programming_languages" title="List of C-family programming languages">C</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_design" title="Software design">Designed by</a></th><td class="infobox-data"><a href="/wiki/Microsoft" title="Microsoft">Microsoft</a></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">Microsoft</td></tr><tr><th scope="row" class="infobox-label">First appeared</th><td class="infobox-data">2005<span class="noprint">; 19 years ago</span><span style="display:none"> (<span class="bday dtstart published updated">2005</span>)</span></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">Common Language Infrastructure</a></td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp">docs<wbr />.microsoft<wbr />.com<wbr />/en-us<wbr />/cpp<wbr />/dotnet<wbr />/dotnet-programming-with-cpp-cli-visual-cpp</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #eee;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/C%2B%2B" title="C++">C++</a>, <a href="/wiki/Managed_Extensions_for_C%2B%2B" title="Managed Extensions for C++">Managed Extensions for C++</a>, <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a></td></tr></tbody></table> <p><b>C++/CLI</b> is a variant of the <a href="/wiki/C%2B%2B" title="C++">C++</a> <a href="/wiki/Programming_language" title="Programming language">programming language</a>, modified for <a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">Common Language Infrastructure</a>. It has been part of <a href="/wiki/Visual_Studio" title="Visual Studio">Visual Studio</a> 2005 and later, and provides interoperability with other <a href="/wiki/.NET" title=".NET">.NET</a> languages such as <a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a>. Microsoft created C++/CLI to supersede <a href="/wiki/Managed_Extensions_for_C%2B%2B" title="Managed Extensions for C++">Managed Extensions for C++</a>. In December 2005, <a href="/wiki/Ecma_International" title="Ecma International">Ecma International</a> published C++/CLI specifications as the <b>ECMA-372</b> standard.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Syntax_changes">Syntax changes</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=1" title="Edit section: Syntax changes"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>C++/CLI should be thought of as a language of its own (with a new set of keywords, for example), instead of the C++ superset-oriented <a href="/wiki/Managed_Extensions_for_C%2B%2B" title="Managed Extensions for C++">Managed C++</a> (MC++) (whose non-standard keywords were styled like <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">__gc</span></code> or <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">__value</span></code>). Because of this, there are some major syntactic changes, especially related to the elimination of ambiguous identifiers and the addition of .NET-specific features. </p><p>Many conflicting syntaxes, such as the multiple versions of operator <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="k">new</span><span class="p">()</span></code> in MC++, have been split: in C++/CLI, .NET reference types are created with the new keyword <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">gcnew</span></code> (i.e. <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage collected</a> new()). Also, C++/CLI has introduced the concept of generics from .NET (similar, for the most common purposes, to standard C++ templates, but quite different in their implementation). </p> <div class="mw-heading mw-heading3"><h3 id="Handles">Handles</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=2" title="Edit section: Handles"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In MC++, there were two different types of <a href="/wiki/Pointer_(computer_programming)" title="Pointer (computer programming)">pointers</a>: <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">__nogc</span></code> pointers were normal C++ pointers, while <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">__gc</span></code> pointers worked on .NET reference types. In C++/CLI, however, the only type of pointer is the normal C++ pointer, while the .NET reference types are accessed through a "handle", with the new syntax <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">ClassName</span><span class="o">^</span></code> (instead of <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">ClassName</span><span class="o">*</span></code>). This new construct is especially helpful when managed and standard C++ code is mixed; it clarifies which objects are under .NET automatic garbage collection and which objects the programmer must remember to explicitly destroy. </p> <div class="mw-heading mw-heading3"><h3 id="Tracking_references">Tracking references</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=3" title="Edit section: Tracking references"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <b>tracking reference</b> in C++/CLI is a handle of a passed-by-reference variable. It is similar in concept to using <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="o">*&</span></code> (reference to a pointer) in standard C++, and (in function declarations) corresponds to the <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">ref</span></code> keyword applied to types in C#, or <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">ByRef</span></code> in <a href="/wiki/Visual_Basic_.NET" class="mw-redirect" title="Visual Basic .NET">Visual Basic .NET</a>. C++/CLI uses a <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="o">^%</span></code> syntax to indicate a tracking reference to a handle. </p><p>The following code shows an example of the use of tracking references. Replacing the tracking reference with a regular handle variable would leave the resulting string array with 10 uninitialized string handles, as only copies of the string handles in the array would be set, due to them being passed by value rather than by reference. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="w"> </span><span class="n">array</span><span class="o"><</span><span class="n">String</span><span class="o">^></span><span class="w"> </span><span class="o">^</span><span class="n">arr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gcnew</span><span class="w"> </span><span class="n">array</span><span class="o"><</span><span class="n">String</span><span class="o">^></span><span class="p">(</span><span class="mi">10</span><span class="p">);</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">each</span><span class="p">(</span><span class="n">String</span><span class="o">^%</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="n">in</span><span class="w"> </span><span class="n">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">.</span><span class="n">ToString</span><span class="p">();</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Finalizers_and_automatic_variables">Finalizers and automatic variables</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=4" title="Edit section: Finalizers and automatic variables"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Another change in C++/CLI is the introduction of the <a href="/wiki/Finalizer" title="Finalizer">finalizer</a> syntax <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="o">!</span><span class="n">ClassName</span><span class="p">()</span></code>, a special type of nondeterministic destructor that is run as a part of the <a href="/wiki/Garbage_collection_(computer_science)" title="Garbage collection (computer science)">garbage collection routine</a>. The C++ destructor syntax <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="o">~</span><span class="n">ClassName</span><span class="p">()</span></code> also exists for managed objects, and better reflects the "traditional" C++ semantics of deterministic destruction (that is, destructors that can be called by user code with <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="k">delete</span></code>). </p><p>In the raw .NET paradigm, the nondeterministic destruction model overrides the protected <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">Finalize</span></code> method of the root <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">Object</span></code> class, while the deterministic model is implemented through the <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">IDisposable</span></code> <a href="/wiki/Interface_(computer_science)" class="mw-redirect" title="Interface (computer science)">interface</a> method <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="n">Dispose</span></code> (which the C++/CLI compiler turns the destructor into). Objects from C# or VB.NET code that override the Dispose method can be disposed of manually in C++/CLI with <code class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><span class="k">delete</span></code> just as .NET classes in C++/CLI can. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// C++/CLI</span> <span class="n">ref</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span> <span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">();</span><span class="w"> </span><span class="c1">// constructor</span> <span class="w"> </span><span class="o">~</span><span class="n">MyClass</span><span class="p">();</span><span class="w"> </span><span class="c1">// (deterministic) destructor (implemented as IDisposable.Dispose())</span> <span class="k">protected</span><span class="o">:</span> <span class="w"> </span><span class="o">!</span><span class="n">MyClass</span><span class="p">();</span><span class="w"> </span><span class="c1">// finalizer (non-deterministic destructor) (implemented as Finalize())</span> <span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">Test</span><span class="p">()</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">MyClass</span><span class="w"> </span><span class="n">automatic</span><span class="p">;</span><span class="w"> </span><span class="c1">// Not a handle, no initialization: compiler calls constructor here</span> <span class="w"> </span> <span class="w"> </span><span class="n">MyClass</span><span class="w"> </span><span class="o">^</span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">gcnew</span><span class="w"> </span><span class="n">MyClass</span><span class="p">();</span> <span class="w"> </span><span class="k">delete</span><span class="w"> </span><span class="n">user</span><span class="p">;</span> <span class="w"> </span><span class="c1">// Compiler calls automatic's destructor when automatic goes out of scope</span> <span class="w"> </span><span class="p">}</span> <span class="p">};</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Operator_overloading">Operator overloading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=5" title="Edit section: Operator overloading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Operator_overloading" title="Operator overloading">Operator overloading</a> works analogously to standard C++. Every * becomes a ^, every & becomes an %, but the rest of the syntax is unchanged, except for an important addition: for .NET classes, operator overloading is possible not only for classes themselves, but also for references to those classes. This feature is necessary to give a ref class the semantics for operator overloading expected from .NET ref classes. (In reverse, this also means that for .NET framework ref classes, reference operator overloading often is implicitly implemented in C++/CLI.) </p><p>For example, comparing two distinct String references (String^) via the operator == will give true whenever the two strings are equal. The operator overloading is static, however. Thus, casting to Object^ will remove the overloading semantics. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//effects of reference operator overloading</span> <span class="n">String</span><span class="w"> </span><span class="o">^</span><span class="n">s1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"abc"</span><span class="p">;</span> <span class="n">String</span><span class="w"> </span><span class="o">^</span><span class="n">s2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"ab"</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">"c"</span><span class="p">;</span> <span class="n">Object</span><span class="w"> </span><span class="o">^</span><span class="n">o1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">s1</span><span class="p">;</span> <span class="n">Object</span><span class="w"> </span><span class="o">^</span><span class="n">o2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">s2</span><span class="p">;</span> <span class="n">s1</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">s2</span><span class="p">;</span><span class="w"> </span><span class="c1">// true</span> <span class="n">o1</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">o2</span><span class="p">;</span><span class="w"> </span><span class="c1">// false</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Interoperability">Interoperability</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=6" title="Edit section: Interoperability"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>C++/CLI allows C++ programs to consume C# programs in C# DLLs.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Here the #using keyword shows the compiler where the DLL is located for its compilation metadata. This simple example requires no data <a href="/wiki/Marshalling_(computer_science)" title="Marshalling (computer science)">marshalling</a>. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">"stdafx.h"</span> <span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">System</span><span class="p">;</span> <span class="cp">#using "...MyCS.dll"</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="n">array</span><span class="o"><</span><span class="n">System</span><span class="o">::</span><span class="n">String</span><span class="w"> </span><span class="o">^></span><span class="w"> </span><span class="o">^</span><span class="n">args</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MyCS</span><span class="o">::</span><span class="n">Class1</span><span class="o">::</span><span class="n">add</span><span class="p">(</span><span class="mf">40.1</span><span class="p">,</span><span class="w"> </span><span class="mf">1.9</span><span class="p">);</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>The C# source code content of MyCS.dll. </p> <div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">namespace</span><span class="w"> </span><span class="nn">MyCS</span><span class="p">;</span> <span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Class1</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="kt">double</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">b</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>This examples shows how strings are marshalled from C++ strings to strings callable from C# then back to C++ strings. String marshalling copies the string contents to forms usable in the different environments. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><string></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><iostream></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><msclr\marshal_cppstd.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf">"stdafx.h"</span> <span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">System</span><span class="p">;</span> <span class="cp">#using "..MyCS.dll"</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"I am cat"</span><span class="p">;</span> <span class="w"> </span><span class="n">System</span><span class="o">::</span><span class="n">String</span><span class="o">^</span><span class="w"> </span><span class="n">clrString</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">msclr</span><span class="o">::</span><span class="n">interop</span><span class="o">::</span><span class="n">marshal_as</span><span class="o"><</span><span class="n">System</span><span class="o">::</span><span class="n">String</span><span class="o">^></span><span class="p">(</span><span class="n">s</span><span class="p">);</span><span class="w"> </span><span class="c1">// string usable from C#</span> <span class="w"> </span><span class="n">System</span><span class="o">::</span><span class="n">String</span><span class="o">^</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MyCS</span><span class="o">::</span><span class="n">Class1</span><span class="o">::</span><span class="n">process</span><span class="p">(</span><span class="n">clrString</span><span class="p">);</span><span class="w"> </span><span class="c1">// call C# function</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">cppString</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">msclr</span><span class="o">::</span><span class="n">interop</span><span class="o">::</span><span class="n">marshal_as</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">(</span><span class="n">t</span><span class="p">);</span><span class="w"> </span><span class="c1">// string usable from C++</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="s">"Hello, C++/C# Interop!"</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">cppString</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>The C# code is not in any way C++-aware. </p> <div class="mw-highlight mw-highlight-lang-csharp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">namespace</span><span class="w"> </span><span class="nn">MyCS</span><span class="p">;</span> <span class="k">public</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Class1</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">static</span><span class="w"> </span><span class="kt">string</span><span class="w"> </span><span class="nf">process</span><span class="p">(</span><span class="kt">string</span><span class="w"> </span><span class="n">a</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">a</span><span class="p">.</span><span class="n">Replace</span><span class="p">(</span><span class="s">"cat"</span><span class="p">,</span><span class="w"> </span><span class="s">"dog"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s">" with a tail"</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>C++/C# interoperability allows C++ simplified access to the entire world of .NET features. </p> <div class="mw-heading mw-heading2"><h2 id="C++/CX"><span id="C.2B.2B.2FCX"></span>C++/CX</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=7" title="Edit section: C++/CX"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/C%2B%2B/CX" title="C++/CX">C++/CX</a> targeting <a href="/wiki/WinRT" class="mw-redirect" title="WinRT">WinRT</a>, although it produces entirely unmanaged code, borrows the ref and ^ syntax for the reference-counted components of WinRT, which are similar to <a href="/wiki/Component_Object_Model" title="Component Object Model">COM</a> "objects".<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=8" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080810165757/http://www.ecma-international.org/publications/standards/Ecma-372.htm">"ECMA-372"</a>. <i>ecma-international.org</i>. <a href="/wiki/Ecma_International" title="Ecma International">Ecma International</a>. December 2005. Archived from <a rel="nofollow" class="external text" href="https://www.ecma-international.org/publications-and-standards/standards/ecma-372/">the original</a> on 10 August 2008.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ecma-international.org&rft.atitle=ECMA-372&rft.date=2005-12&rft_id=https%3A%2F%2Fwww.ecma-international.org%2Fpublications-and-standards%2Fstandards%2Fecma-372%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/dotnet/using-cpp-interop-implicit-pinvoke?view=vs-2019">Using C++ Interop (Implicit PInvoke)</a></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://devblogs.microsoft.com/cppblog/inside-the-ccx-design/">Inside the C++/CX Design - Visual C++ Team Blog - Site Home - MSDN Blogs</a></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=9" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239549316">.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}</style><div class="refbegin" style=""> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSutter2003" class="citation web cs1"><a href="/wiki/Herb_Sutter" title="Herb Sutter">Sutter, Herb</a> (23 November 2003). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20071109130154/http://blogs.msdn.com/hsutter/archive/2003/11/23/53519.aspx">"C++/CLI keywords: Under the hood"</a>. <i>Herb Sutter's Blog</i>. <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>. Archived from <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/archive/blogs/hsutter/ccli-keywords-under-the-hood">the original</a> on 9 November 2007.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Herb+Sutter%27s+Blog&rft.atitle=C%2B%2B%2FCLI+keywords%3A+Under+the+hood&rft.date=2003-11-23&rft.aulast=Sutter&rft.aufirst=Herb&rft_id=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Farchive%2Fblogs%2Fhsutter%2Fccli-keywords-under-the-hood&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFSutter2006" class="citation web cs1"><a href="/wiki/Herb_Sutter" title="Herb Sutter">Sutter, Herb</a> (24 February 2006). <a rel="nofollow" class="external text" href="http://www.gotw.ca/publications/C++CLIRationale.pdf">"A Design Rationale for C++/CLI"</a> <span class="cs1-format">(PDF)</span>. <a href="/wiki/Wikipedia:SPS" class="mw-redirect" title="Wikipedia:SPS">Self-published</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=A+Design+Rationale+for+C%2B%2B%2FCLI&rft.pub=Self-published&rft.date=2006-02-24&rft.aulast=Sutter&rft.aufirst=Herb&rft_id=http%3A%2F%2Fwww.gotw.ca%2Fpublications%2FC%2B%2BCLIRationale.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFStroustrup2021" class="citation web cs1"><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Stroustrup, Bjarne</a> (23 July 2021). <a rel="nofollow" class="external text" href="https://www.stroustrup.com/bs_faq.html#CppCLI">"What do you think of C++/CLI?"</a>. <i>Bjarne Stroustrup's FAQ</i>. <a href="/wiki/Wikipedia:SPS" class="mw-redirect" title="Wikipedia:SPS">Self-published</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Bjarne+Stroustrup%27s+FAQ&rft.atitle=What+do+you+think+of+C%2B%2B%2FCLI%3F&rft.date=2021-07-23&rft.aulast=Stroustrup&rft.aufirst=Bjarne&rft_id=https%3A%2F%2Fwww.stroustrup.com%2Fbs_faq.html%23CppCLI&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLippman" class="citation journal cs1"><a href="/wiki/Stanley_B._Lippman" title="Stanley B. Lippman">Lippman, Stanley</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080205003004/http://msdn.microsoft.com/msdnmag/issues/06/00/PureC/default.aspx">"Pure C++: Hello, C++/CLI"</a>. <i><a href="/wiki/MSDN_Magazine" class="mw-redirect" title="MSDN Magazine">MSDN Magazine</a></i>. <b>21</b> (3). <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>. Archived from <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/archive/msdn-magazine/2006/vs-2005-guided-tour/pure-c-hello-c-cli">the original</a> on 5 February 2008.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=MSDN+Magazine&rft.atitle=Pure+C%2B%2B%3A+Hello%2C+C%2B%2B%2FCLI&rft.volume=21&rft.issue=3&rft.aulast=Lippman&rft.aufirst=Stanley&rft_id=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Farchive%2Fmsdn-magazine%2F2006%2Fvs-2005-guided-tour%2Fpure-c-hello-c-cli&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLippman2004" class="citation web cs1"><a href="/wiki/Stanley_B._Lippman" title="Stanley B. Lippman">Lippman, Stanley</a> (5 August 2004). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20071007030053/http://blogs.msdn.com/slippman/archive/2004/08/05/209606.aspx">"Why C++/CLI Supports both Templates for CLI Types and the CLI Generic Mechanism"</a>. <i>Stan Lippman's BLog</i>. <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a>. Archived from <a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/archive/blogs/slippman/why-c-supports-both-class-and-typename-for-type-parameters">the original</a> on 7 October 2007.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Stan+Lippman%27s+BLog&rft.atitle=Why+C%2B%2B%2FCLI+Supports+both+Templates+for+CLI+Types+and+the+CLI+Generic+Mechanism&rft.date=2004-08-05&rft.aulast=Lippman&rft.aufirst=Stanley&rft_id=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Farchive%2Fblogs%2Fslippman%2Fwhy-c-supports-both-class-and-typename-for-type-parameters&rfr_id=info%3Asid%2Fen.wikipedia.org%3AC%2B%2B%2FCLI" class="Z3988"></span></li></ul> </div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B/CLI&action=edit&section=10" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp">Official website</a></span></span></li> <li><a rel="nofollow" class="external text" href="https://patents.google.com/patent/US7496889B2/en">Patent regarding whitespace in keywords</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Common_Language_Infrastructure" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Common_Language_Infrastructure" title="Template:Common Language Infrastructure"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Common_Language_Infrastructure" title="Template talk:Common Language Infrastructure"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Common_Language_Infrastructure" title="Special:EditPage/Template:Common Language Infrastructure"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Common_Language_Infrastructure" style="font-size:114%;margin:0 4em"><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">Common Language Infrastructure</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Architecture</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Application_domain" title="Application domain">Application domain</a></li> <li><a href="/wiki/Code_Access_Security" title="Code Access Security">Code Access Security</a></li> <li><a href="/wiki/Common_Intermediate_Language" title="Common Intermediate Language">Common Intermediate Language</a> <ul><li><a href="/wiki/List_of_CIL_instructions" title="List of CIL instructions">instructions</a></li></ul></li> <li><a href="/wiki/Common_Type_System" title="Common Type System">Common Type System</a></li> <li><a href="/wiki/Platform_Invocation_Services" title="Platform Invocation Services">Platform Invocation Services</a></li> <li><a href="/wiki/Virtual_Execution_System" title="Virtual Execution System">Virtual Execution System</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Assembly_(CLI)" title="Assembly (CLI)">Assembly</a></li> <li><a href="/wiki/Delegate_(CLI)" title="Delegate (CLI)">Delegate</a></li> <li><a href="/wiki/Global_Assembly_Cache" title="Global Assembly Cache">Global Assembly Cache</a></li> <li><a href="/wiki/Manifest_(CLI)" title="Manifest (CLI)">Manifest</a></li> <li><a href="/wiki/Metadata_(CLI)" title="Metadata (CLI)">Metadata</a></li> <li><a href="/wiki/Standard_Libraries_(CLI)" title="Standard Libraries (CLI)">Standard Libraries</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Implementations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Microsoft</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/.NET" title=".NET">.NET</a></li> <li><a href="/wiki/.NET_Framework" title=".NET Framework">.NET Framework</a></li> <li><a href="/wiki/.NET_Compact_Framework" title=".NET Compact Framework">.NET Compact Framework</a></li> <li><a href="/wiki/.NET_Micro_Framework" title=".NET Micro Framework">.NET Micro Framework</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Mono_(software)" title="Mono (software)">Mono</a></li> <li><a href="/wiki/DotGNU" title="DotGNU">DotGNU</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/List_of_CLI_languages" title="List of CLI languages">Languages</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Major languages</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a></li> <li><a href="/wiki/Visual_Basic_.NET" class="mw-redirect" title="Visual Basic .NET">Visual Basic</a></li> <li><a href="/wiki/F_Sharp_(programming_language)" title="F Sharp (programming language)">F#</a></li> <li><a href="/wiki/PowerShell" title="PowerShell">PowerShell</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Axum_(programming_language)" title="Axum (programming language)">Axum</a></li> <li><a href="/wiki/A_Sharp_(.NET)" title="A Sharp (.NET)">A#</a></li> <li><a href="/wiki/Boo_(programming_language)" title="Boo (programming language)">Boo</a></li> <li><a href="/wiki/Cobra_(programming_language)" title="Cobra (programming language)">Cobra</a></li> <li><a class="mw-selflink selflink">C++/CLI</a></li> <li><a href="/wiki/IronScheme" title="IronScheme">IronScheme</a></li> <li><a href="/wiki/IronPython" title="IronPython">IronPython</a></li> <li><a href="/wiki/IronRuby" title="IronRuby">IronRuby</a></li> <li><a href="/wiki/JScript_.NET" title="JScript .NET">JScript .NET</a></li> <li><a href="/wiki/Visual_J_Sharp" title="Visual J Sharp">J#</a></li> <li><a href="/wiki/Nemerle" title="Nemerle">Nemerle</a></li> <li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li> <li><a href="/wiki/Phalanger_(compiler)" title="Phalanger (compiler)">Phalanger</a></li> <li><a href="/wiki/Q_Sharp" title="Q Sharp">Q#</a></li> <li><a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a></li> <li><a href="/wiki/Microsoft_Small_Basic" title="Microsoft Small Basic">Small Basic</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Comparison</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Comparison_of_C_Sharp_and_Java" title="Comparison of C Sharp and Java">C# and Java</a></li> <li><a href="/wiki/Comparison_of_C_Sharp_and_Visual_Basic_.NET" title="Comparison of C Sharp and Visual Basic .NET">C# and Visual Basic .NET</a></li> <li><a href="/wiki/Comparison_of_Visual_Basic_and_Visual_Basic_.NET" title="Comparison of Visual Basic and Visual Basic .NET">Visual Basic and Visual Basic .NET</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Standards_of_Ecma_International" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Ecma_International_Standards" title="Template:Ecma International Standards"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Ecma_International_Standards" title="Template talk:Ecma International Standards"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Ecma_International_Standards" title="Special:EditPage/Template:Ecma International Standards"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Standards_of_Ecma_International" style="font-size:114%;margin:0 4em">Standards of <a href="/wiki/Ecma_International" title="Ecma International">Ecma International</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Application interfaces</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ANSI_escape_code" title="ANSI escape code">ANSI escape code</a></li> <li><a href="/wiki/Application_Programming_Interface_for_Windows" title="Application Programming Interface for Windows">APIW</a></li> <li><a href="/wiki/Common_Language_Infrastructure" title="Common Language Infrastructure">Common Language Infrastructure</a></li> <li><a href="/wiki/Office_Open_XML" title="Office Open XML">Office Open XML</a></li> <li><a href="/wiki/Open_XML_Paper_Specification" title="Open XML Paper Specification">OpenXPS</a></li></ul> </div></td><td class="noviewer navbox-image" rowspan="7" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"><a href="/wiki/File:Ecma_International_Logo.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/0/04/Ecma_International_Logo.svg/100px-Ecma_International_Logo.svg.png" decoding="async" width="100" height="27" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/04/Ecma_International_Logo.svg/150px-Ecma_International_Logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/04/Ecma_International_Logo.svg/200px-Ecma_International_Logo.svg.png 2x" data-file-width="201" data-file-height="54" /></a></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">File systems (tape)</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Advanced_Intelligent_Tape" title="Advanced Intelligent Tape">Advanced Intelligent Tape</a></li> <li><a href="/wiki/Digital_Data_Storage" title="Digital Data Storage">DDS</a></li> <li><a href="/wiki/Digital_Linear_Tape" title="Digital Linear Tape">DLT</a></li> <li><a href="/wiki/Digital_Linear_Tape" title="Digital Linear Tape">Super DLT</a></li> <li><a href="/wiki/Linear_Tape-Open" title="Linear Tape-Open">Linear Tape-Open</a> (Ultrium-1)</li> <li><a href="/wiki/VXA" title="VXA">VXA</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">File systems (disk)</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/CD-ROM" title="CD-ROM">CD-ROM</a></li> <li><a href="/wiki/ISO_9660" title="ISO 9660">CD File System</a> (CDFS)</li> <li><a href="/wiki/File_Allocation_Table" title="File Allocation Table">FAT</a> <ul><li><a href="/wiki/FAT12" class="mw-redirect" title="FAT12">FAT12</a></li> <li><a href="/wiki/FAT16" class="mw-redirect" title="FAT16">FAT16</a></li> <li><a href="/wiki/FAT16B" class="mw-redirect" title="FAT16B">FAT16B</a></li></ul></li> <li><a href="/wiki/Floppy_disk" title="Floppy disk">FD</a></li> <li><a href="/wiki/Universal_Disk_Format" title="Universal Disk Format">UDF</a></li> <li><a href="/wiki/Ultra_Density_Optical" title="Ultra Density Optical">Ultra Density Optical</a></li> <li><a href="/wiki/Universal_Media_Disc" title="Universal Media Disc">Universal Media Disc</a></li> <li><a href="/wiki/Holographic_Versatile_Disc" title="Holographic Versatile Disc">Holographic Versatile Disc</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Graphics</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Universal_3D" title="Universal 3D">Universal 3D</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Programming languages</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a class="mw-selflink selflink">C++/CLI</a></li> <li><a href="/wiki/C_Sharp_(programming_language)" title="C Sharp (programming language)">C#</a></li> <li><a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a></li> <li><a href="/wiki/JavaScript" title="JavaScript">JavaScript</a> (<a href="/wiki/ECMAScript_for_XML" title="ECMAScript for XML">E4X</a>, <a href="/wiki/ECMAScript" title="ECMAScript">ECMAScript</a>)</li> <li><a href="/wiki/Dart_(programming_language)" title="Dart (programming language)">Dart</a></li> <li><a href="/wiki/Minimal_BASIC" title="Minimal BASIC">Minimal BASIC</a></li> <li><a href="/wiki/Full_BASIC" title="Full BASIC">Full BASIC</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Radio link interfaces</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Near-field_communication" title="Near-field communication">NFC</a></li> <li><a href="/wiki/Ultra-wideband" title="Ultra-wideband">UWB</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ISO/IEC_2022" title="ISO/IEC 2022">ECMA-35</a></li> <li><a href="/wiki/JSON" title="JSON">JSON</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><a href="/wiki/List_of_Ecma_standards" title="List of Ecma standards">List of Ecma standards</a> (1961 – present)</div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="C++" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:C%2B%2B_programming_language" title="Template:C++ programming language"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:C%2B%2B_programming_language" title="Template talk:C++ programming language"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:C%2B%2B_programming_language" title="Special:EditPage/Template:C++ programming language"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="C++" style="font-size:114%;margin:0 4em"><a href="/wiki/C%2B%2B" title="C++">C++</a></div></th></tr><tr><td class="navbox-abovebelow" colspan="2"><div> <ul><li><a href="/wiki/C%2B%2B" title="C++">C++</a></li> <li><a href="/wiki/Outline_of_C%2B%2B" title="Outline of C++">Outline</a></li> <li><a href="/wiki/C%2B%2B#Standardization" title="C++">C++98</a></li> <li><a href="/wiki/C%2B%2B03" title="C++03">C++03</a></li> <li><a href="/wiki/C%2B%2B11" title="C++11">C++11</a></li> <li><a href="/wiki/C%2B%2B14" title="C++14">C++14</a></li> <li><a href="/wiki/C%2B%2B17" title="C++17">C++17</a></li> <li><a href="/wiki/C%2B%2B20" title="C++20">C++20</a></li> <li><a href="/wiki/C%2B%2B23" title="C++23">C++23</a></li> <li><a href="/wiki/C%2B%2B26" title="C++26">C++26</a></li> <li><a href="/wiki/Category:C%2B%2B_libraries" title="Category:C++ libraries">Libraries</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Features</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/C%2B%2B_classes" title="C++ classes">Classes</a></li> <li><a href="/wiki/Concepts_(C%2B%2B)" title="Concepts (C++)">Concepts</a></li> <li><a href="/wiki/Copy_constructor_(C%2B%2B)" title="Copy constructor (C++)">Copy constructor</a></li> <li><a href="/wiki/C%2B%2B#Exception_handling" title="C++">Exception handling</a> (<a href="/wiki/Exception_safety" title="Exception safety">Exception safety</a>)</li> <li><a href="/wiki/Function_overloading" title="Function overloading">Function overloading</a></li> <li><a href="/wiki/C%2B%2B11#Rvalue_references_and_move_constructors" title="C++11">Move semantics</a></li> <li><a href="/wiki/New_and_delete_(C%2B%2B)" title="New and delete (C++)">new and delete</a></li> <li><a href="/wiki/Operator_overloading" title="Operator overloading">Operator overloading</a></li> <li><a href="/wiki/Operators_in_C_and_C%2B%2B" title="Operators in C and C++">Operators</a></li> <li><a href="/wiki/Reference_(C%2B%2B)" title="Reference (C++)">References</a></li> <li><a href="/wiki/Template_(C%2B%2B)" title="Template (C++)">Templates</a></li> <li><a href="/wiki/Virtual_function" title="Virtual function">Virtual functions</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/C%2B%2B_Standard_Library" title="C++ Standard Library">Standard Library</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Input/output_(C%2B%2B)" title="Input/output (C++)">I/O Streams</a></li> <li><a href="/wiki/Smart_pointer" title="Smart pointer">Smart pointers</a></li> <li><a href="/wiki/Standard_Template_Library" title="Standard Template Library">STL</a></li> <li><a href="/wiki/C%2B%2B_string_handling" title="C++ string handling">Strings</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Ideas</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/As-if_rule" title="As-if rule">As-if rule</a></li> <li><a href="/wiki/Barton%E2%80%93Nackman_trick" title="Barton–Nackman trick">Barton–Nackman trick</a></li> <li><a href="/wiki/Curiously_recurring_template_pattern" title="Curiously recurring template pattern">Curiously recurring template pattern</a></li> <li><a href="/wiki/Most_vexing_parse" title="Most vexing parse">Most vexing parse</a></li> <li><a href="/wiki/One_Definition_Rule" title="One Definition Rule">One Definition Rule</a></li> <li><a href="/wiki/Resource_acquisition_is_initialization" title="Resource acquisition is initialization">Resource acquisition is initialization</a></li> <li><a href="/wiki/Rule_of_three_(C%2B%2B_programming)" title="Rule of three (C++ programming)">Rule of three</a></li> <li><a href="/wiki/Object_slicing" title="Object slicing">Slicing</a></li> <li><a href="/wiki/Special_member_functions" title="Special member functions">Special member functions</a></li> <li><a href="/wiki/Substitution_failure_is_not_an_error" title="Substitution failure is not an error">Substitution failure is not an error</a></li> <li><a href="/wiki/Template_metaprogramming" title="Template metaprogramming">Template metaprogramming</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Category:C%2B%2B_compilers" title="Category:C++ compilers">Compilers</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/List_of_compilers#C++_compilers" title="List of compilers">Comparison of C++ compilers</a></li> <li><a href="/wiki/Borland_C%2B%2B" title="Borland C++">Borland C++</a></li> <li><a href="/wiki/Borland_C%2B%2B" title="Borland C++">Borland Turbo C++</a></li> <li><a href="/wiki/C%2B%2BBuilder" title="C++Builder">C++Builder</a></li> <li><a href="/wiki/Clang" title="Clang">Clang</a></li> <li><a href="/wiki/GNU_Compiler_Collection" title="GNU Compiler Collection">GCC</a></li> <li><a href="/wiki/Intel_C%2B%2B_Compiler" title="Intel C++ Compiler">Intel C++ Compiler</a></li> <li><a href="/wiki/Oracle_Developer_Studio" title="Oracle Developer Studio">Oracle Solaris Studio</a></li> <li><a href="/wiki/Visual_C%2B%2B" class="mw-redirect" title="Visual C++">Visual C++</a></li> <li><a href="/wiki/Watcom_C/C%2B%2B" title="Watcom C/C++">Watcom C/C++</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Category:Integrated_development_environments" title="Category:Integrated development environments">IDEs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Comparison_of_integrated_development_environments#C/C++" title="Comparison of integrated development environments">Comparison of C IDEs</a></li> <li><a href="/wiki/Anjuta" title="Anjuta">Anjuta</a></li> <li><a href="/wiki/CLion" class="mw-redirect" title="CLion">CLion</a></li> <li><a href="/wiki/Code::Blocks" title="Code::Blocks">Code::Blocks</a></li> <li><a href="/wiki/CodeLite" title="CodeLite">CodeLite</a></li> <li><a href="/wiki/Dev-C%2B%2B" title="Dev-C++">Dev-C++</a></li> <li><a href="/wiki/Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li> <li><a href="/wiki/Geany" title="Geany">Geany</a></li> <li><a href="/wiki/NetBeans" title="NetBeans">NetBeans</a></li> <li><a href="/wiki/KDevelop" title="KDevelop">KDevelop</a></li> <li><a href="/wiki/Qt_Creator" title="Qt Creator">Qt Creator</a></li> <li><a href="/wiki/Visual_Studio" title="Visual Studio">Visual Studio</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Superset languages</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Objective-C%2B%2B" class="mw-redirect" title="Objective-C++">Objective-C++</a></li> <li><a class="mw-selflink selflink">C++/CLI</a></li> <li><a href="/wiki/C%2B%2B/CX" title="C++/CX">C++/CX</a></li> <li><a href="/wiki/C%2B%2B/WinRT" title="C++/WinRT">C++/WinRT</a></li> <li><a href="/wiki/Ch_(computer_programming)" title="Ch (computer programming)">Ch</a></li> <li><a href="/wiki/SYCL" title="SYCL">SYCL</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Dialects</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Embedded_C%2B%2B" title="Embedded C++">Embedded C++</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Relative to<br />other languages</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Comparison_of_programming_languages" title="Comparison of programming languages">Comparison of programming languages</a></li> <li><a href="/wiki/Comparison_of_Java_and_C%2B%2B" title="Comparison of Java and C++">Comparison of Java and C++</a></li> <li><a href="/wiki/Comparison_of_ALGOL_68_and_C%2B%2B" title="Comparison of ALGOL 68 and C++">Comparison of ALGOL 68 and C++</a></li> <li><a href="/wiki/Compatibility_of_C_and_C%2B%2B" title="Compatibility of C and C++">Compatibility of C and C++</a></li> <li><a href="/wiki/Criticism_of_C%2B%2B" title="Criticism of C++">Criticism of C++</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Software_development" title="Software development">Designer</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div><span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/Category:C%2B%2B_programming_language_family" title="Category:C++ programming language family">Category</a></b></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"><style data-mw-deduplicate="TemplateStyles:r1038841319">.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}</style></div><div role="navigation" class="navbox authority-control" aria-label="Navbox" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Help:Authority_control" title="Help:Authority control">Authority control databases</a>: National <span class="mw-valign-text-top noprint" typeof="mw:File/Frameless"><a href="https://www.wikidata.org/wiki/Q1022268#identifiers" title="Edit this at Wikidata"><img alt="Edit this at Wikidata" src="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/10px-OOjs_UI_icon_edit-ltr-progressive.svg.png" decoding="async" width="10" height="10" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/15px-OOjs_UI_icon_edit-ltr-progressive.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/8/8a/OOjs_UI_icon_edit-ltr-progressive.svg/20px-OOjs_UI_icon_edit-ltr-progressive.svg.png 2x" data-file-width="20" data-file-height="20" /></a></span></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh2006008767">United States</a></span></li><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="C++/CLI (programovací jazyk)"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph524157&CON_LNG=ENG">Czech Republic</a></span></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="http://olduli.nli.org.il/F/?func=find-b&local_base=NLX10&find_code=UID&request=987007542477905171">Israel</a></span></li></ul></div></td></tr></tbody></table></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=C%2B%2B/CLI&oldid=1258635354">https://en.wikipedia.org/w/index.php?title=C%2B%2B/CLI&oldid=1258635354</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:.NET_programming_languages" title="Category:.NET programming languages">.NET programming languages</a></li><li><a href="/wiki/Category:C%2B%2B_programming_language_family" title="Category:C++ programming language family">C++ programming language family</a></li><li><a href="/wiki/Category:Ecma_standards" title="Category:Ecma standards">Ecma standards</a></li><li><a href="/wiki/Category:Microsoft_Visual_Studio" title="Category:Microsoft Visual Studio">Microsoft Visual Studio</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Wikipedia_introduction_cleanup_from_March_2015" title="Category:Wikipedia introduction cleanup from March 2015">Wikipedia introduction cleanup from March 2015</a></li><li><a href="/wiki/Category:All_pages_needing_cleanup" title="Category:All pages needing cleanup">All pages needing cleanup</a></li><li><a href="/wiki/Category:Articles_covered_by_WikiProject_Wikify_from_March_2015" title="Category:Articles covered by WikiProject Wikify from March 2015">Articles covered by WikiProject Wikify from March 2015</a></li><li><a href="/wiki/Category:All_articles_covered_by_WikiProject_Wikify" title="Category:All articles covered by WikiProject Wikify">All articles covered by WikiProject Wikify</a></li><li><a href="/wiki/Category:Articles_with_example_C%2B%2B_code" title="Category:Articles with example C++ code">Articles with example C++ code</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 20 November 2024, at 20:00<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=C%2B%2B/CLI&diff=1258635354&oldid=1002916712&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-669b4ddb54-7b7gr","wgBackendResponseTime":265,"wgPageParseReport":{"limitreport":{"cputime":"0.510","walltime":"0.830","ppvisitednodes":{"value":2220,"limit":1000000},"postexpandincludesize":{"value":75031,"limit":2097152},"templateargumentsize":{"value":3120,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":32,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":66041,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 726.806 1 -total"," 17.15% 124.644 5 Template:Navbox"," 15.47% 112.408 20 Template:Cpp"," 15.20% 110.466 5 Template:Cite_web"," 14.44% 104.986 1 Template:Common_Language_Infrastructure"," 13.71% 99.615 1 Template:Reflist"," 10.34% 75.133 1 Template:Short_description"," 8.07% 58.675 1 Template:Lead_too_short"," 7.94% 57.674 1 Template:Infobox_programming_language"," 7.27% 52.831 1 Template:Ambox"]},"scribunto":{"limitreport-timeusage":{"value":"0.306","limit":"10.000"},"limitreport-memusage":{"value":5880056,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-hhmqd","timestamp":"20241122164527","ttl":717286,"transientcontent":true}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"C++\/CLI","url":"https:\/\/en.wikipedia.org\/wiki\/C%2B%2B\/CLI","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1022268","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1022268","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-05-29T09:12:46Z","dateModified":"2024-11-20T20:00:10Z","headline":"programming language"}</script> </body> </html>