• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="UTF-8">
5<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
6<meta name="viewport" content="width=device-width, initial-scale=1.0">
7<meta name="generator" content="Asciidoctor 1.5.8">
8<meta name="author" content="Rene Rivera">
9<title>Boost.Predef</title>
10<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
11<style>
12/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
13/* Uncomment @import statement below to use as custom stylesheet */
14/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
15article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
16audio,canvas,video{display:inline-block}
17audio:not([controls]){display:none;height:0}
18script{display:none!important}
19html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
20a{background:transparent}
21a:focus{outline:thin dotted}
22a:active,a:hover{outline:0}
23h1{font-size:2em;margin:.67em 0}
24abbr[title]{border-bottom:1px dotted}
25b,strong{font-weight:bold}
26dfn{font-style:italic}
27hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
28mark{background:#ff0;color:#000}
29code,kbd,pre,samp{font-family:monospace;font-size:1em}
30pre{white-space:pre-wrap}
31q{quotes:"\201C" "\201D" "\2018" "\2019"}
32small{font-size:80%}
33sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
34sup{top:-.5em}
35sub{bottom:-.25em}
36img{border:0}
37svg:not(:root){overflow:hidden}
38figure{margin:0}
39fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
40legend{border:0;padding:0}
41button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
42button,input{line-height:normal}
43button,select{text-transform:none}
44button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
45button[disabled],html input[disabled]{cursor:default}
46input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
47button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
48textarea{overflow:auto;vertical-align:top}
49table{border-collapse:collapse;border-spacing:0}
50*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
51html,body{font-size:100%}
52body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
53a:hover{cursor:pointer}
54img,object,embed{max-width:100%;height:auto}
55object,embed{height:100%}
56img{-ms-interpolation-mode:bicubic}
57.left{float:left!important}
58.right{float:right!important}
59.text-left{text-align:left!important}
60.text-right{text-align:right!important}
61.text-center{text-align:center!important}
62.text-justify{text-align:justify!important}
63.hide{display:none}
64img,object,svg{display:inline-block;vertical-align:middle}
65textarea{height:auto;min-height:50px}
66select{width:100%}
67.center{margin-left:auto;margin-right:auto}
68.stretch{width:100%}
69.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
70div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
71a{color:#2156a5;text-decoration:underline;line-height:inherit}
72a:hover,a:focus{color:#1d4b8f}
73a img{border:none}
74p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
75p aside{font-size:.875em;line-height:1.35;font-style:italic}
76h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
77h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
78h1{font-size:2.125em}
79h2{font-size:1.6875em}
80h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
81h4,h5{font-size:1.125em}
82h6{font-size:1em}
83hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
84em,i{font-style:italic;line-height:inherit}
85strong,b{font-weight:bold;line-height:inherit}
86small{font-size:60%;line-height:inherit}
87code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
88ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
89ul,ol{margin-left:1.5em}
90ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
91ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
92ul.square{list-style-type:square}
93ul.circle{list-style-type:circle}
94ul.disc{list-style-type:disc}
95ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
96dl dt{margin-bottom:.3125em;font-weight:bold}
97dl dd{margin-bottom:1.25em}
98abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
99abbr{text-transform:none}
100blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
101blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
102blockquote cite::before{content:"\2014 \0020"}
103blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
104blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
105@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
106h1{font-size:2.75em}
107h2{font-size:2.3125em}
108h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
109h4{font-size:1.4375em}}
110table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
111table thead,table tfoot{background:#f7f8f7}
112table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
113table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
114table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
115table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
116h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
117h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
118.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
119.clearfix::after,.float-group::after{clear:both}
120*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
121*:not(pre)>code.nobreak{word-wrap:normal}
122*:not(pre)>code.nowrap{white-space:nowrap}
123pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
124em em{font-style:normal}
125strong strong{font-weight:400}
126.keyseq{color:rgba(51,51,51,.8)}
127kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
128.keyseq kbd:first-child{margin-left:0}
129.keyseq kbd:last-child{margin-right:0}
130.menuseq,.menuref{color:#000}
131.menuseq b:not(.caret),.menuref{font-weight:inherit}
132.menuseq{word-spacing:-.02em}
133.menuseq b.caret{font-size:1.25em;line-height:.8}
134.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
135b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
136b.button::before{content:"[";padding:0 3px 0 2px}
137b.button::after{content:"]";padding:0 2px 0 3px}
138p a>code:hover{color:rgba(0,0,0,.9)}
139#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
140#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
141#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
142#content{margin-top:1.25em}
143#content::before{content:none}
144#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
145#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
146#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
147#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
148#header .details span:first-child{margin-left:-.125em}
149#header .details span.email a{color:rgba(0,0,0,.85)}
150#header .details br{display:none}
151#header .details br+span::before{content:"\00a0\2013\00a0"}
152#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
153#header .details br+span#revremark::before{content:"\00a0|\00a0"}
154#header #revnumber{text-transform:capitalize}
155#header #revnumber::after{content:"\00a0"}
156#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
157#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
158#toc>ul{margin-left:.125em}
159#toc ul.sectlevel0>li>a{font-style:italic}
160#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
161#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
162#toc li{line-height:1.3334;margin-top:.3334em}
163#toc a{text-decoration:none}
164#toc a:active{text-decoration:underline}
165#toctitle{color:#7a2518;font-size:1.2em}
166@media screen and (min-width:768px){#toctitle{font-size:1.375em}
167body.toc2{padding-left:15em;padding-right:0}
168#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
169#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
170#toc.toc2>ul{font-size:.9em;margin-bottom:0}
171#toc.toc2 ul ul{margin-left:0;padding-left:1em}
172#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
173body.toc2.toc-right{padding-left:0;padding-right:15em}
174body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
175@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
176#toc.toc2{width:20em}
177#toc.toc2 #toctitle{font-size:1.375em}
178#toc.toc2>ul{font-size:.95em}
179#toc.toc2 ul ul{padding-left:1.25em}
180body.toc2.toc-right{padding-left:0;padding-right:20em}}
181#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
182#content #toc>:first-child{margin-top:0}
183#content #toc>:last-child{margin-bottom:0}
184#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
185#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
186#content{margin-bottom:.625em}
187.sect1{padding-bottom:.625em}
188@media screen and (min-width:768px){#content{margin-bottom:1.25em}
189.sect1{padding-bottom:1.25em}}
190.sect1:last-child{padding-bottom:0}
191.sect1+.sect1{border-top:1px solid #e7e7e9}
192#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
193#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
194#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
195#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
196#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
197.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
198.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
199table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
200.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
201table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
202.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
203.admonitionblock>table td.icon{text-align:center;width:80px}
204.admonitionblock>table td.icon img{max-width:none}
205.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
206.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
207.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
208.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
209.exampleblock>.content>:first-child{margin-top:0}
210.exampleblock>.content>:last-child{margin-bottom:0}
211.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
212.sidebarblock>:first-child{margin-top:0}
213.sidebarblock>:last-child{margin-bottom:0}
214.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
215.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
216.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
217.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
218.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
219@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
220@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
221.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
222.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
223.listingblock pre.highlightjs{padding:0}
224.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
225.listingblock pre.prettyprint{border-width:0}
226.listingblock>.content{position:relative}
227.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
228.listingblock:hover code[data-lang]::before{display:block}
229.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
230.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
231table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
232table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
233table.pyhltable td.code{padding-left:.75em;padding-right:0}
234pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
235pre.pygments .lineno{display:inline-block;margin-right:.25em}
236table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
237.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
238.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
239.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
240.quoteblock blockquote{margin:0;padding:0;border:0}
241.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
242.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
243.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
244.verseblock{margin:0 1em 1.25em}
245.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
246.verseblock pre strong{font-weight:400}
247.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
248.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
249.quoteblock .attribution br,.verseblock .attribution br{display:none}
250.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
251.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
252.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
253.quoteblock.abstract{margin:0 1em 1.25em;display:block}
254.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
255.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
256.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
257.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
258table.tableblock{max-width:100%;border-collapse:separate}
259p.tableblock:last-child{margin-bottom:0}
260td.tableblock>.content{margin-bottom:-1.25em}
261table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
262table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
263table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
264table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
265table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
266table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
267table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
268table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
269table.frame-all{border-width:1px}
270table.frame-sides{border-width:0 1px}
271table.frame-topbot,table.frame-ends{border-width:1px 0}
272table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
273table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
274th.halign-left,td.halign-left{text-align:left}
275th.halign-right,td.halign-right{text-align:right}
276th.halign-center,td.halign-center{text-align:center}
277th.valign-top,td.valign-top{vertical-align:top}
278th.valign-bottom,td.valign-bottom{vertical-align:bottom}
279th.valign-middle,td.valign-middle{vertical-align:middle}
280table thead th,table tfoot th{font-weight:bold}
281tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
282tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
283p.tableblock>code:only-child{background:none;padding:0}
284p.tableblock{font-size:1em}
285td>div.verse{white-space:pre}
286ol{margin-left:1.75em}
287ul li ol{margin-left:1.5em}
288dl dd{margin-left:1.125em}
289dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
290ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
291ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
293ul.unstyled,ol.unstyled{margin-left:0}
294ul.checklist{margin-left:.625em}
295ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
296ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
297ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
298ul.inline>li{margin-left:1.25em}
299.unstyled dl dt{font-weight:400;font-style:normal}
300ol.arabic{list-style-type:decimal}
301ol.decimal{list-style-type:decimal-leading-zero}
302ol.loweralpha{list-style-type:lower-alpha}
303ol.upperalpha{list-style-type:upper-alpha}
304ol.lowerroman{list-style-type:lower-roman}
305ol.upperroman{list-style-type:upper-roman}
306ol.lowergreek{list-style-type:lower-greek}
307.hdlist>table,.colist>table{border:0;background:none}
308.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
309td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
310td.hdlist1{font-weight:bold;padding-bottom:1.25em}
311.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
312.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
313.colist td:not([class]):first-child img{max-width:none}
314.colist td:not([class]):last-child{padding:.25em 0}
315.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
316.imageblock.left{margin:.25em .625em 1.25em 0}
317.imageblock.right{margin:.25em 0 1.25em .625em}
318.imageblock>.title{margin-bottom:0}
319.imageblock.thumb,.imageblock.th{border-width:6px}
320.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
321.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
322.image.left{margin-right:.625em}
323.image.right{margin-left:.625em}
324a.image{text-decoration:none;display:inline-block}
325a.image object{pointer-events:none}
326sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
327sup.footnote a,sup.footnoteref a{text-decoration:none}
328sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
329#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
330#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
331#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
332#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
333#footnotes .footnote:last-of-type{margin-bottom:0}
334#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
335.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
336.gist .file-data>table td.line-data{width:99%}
337div.unbreakable{page-break-inside:avoid}
338.big{font-size:larger}
339.small{font-size:smaller}
340.underline{text-decoration:underline}
341.overline{text-decoration:overline}
342.line-through{text-decoration:line-through}
343.aqua{color:#00bfbf}
344.aqua-background{background-color:#00fafa}
345.black{color:#000}
346.black-background{background-color:#000}
347.blue{color:#0000bf}
348.blue-background{background-color:#0000fa}
349.fuchsia{color:#bf00bf}
350.fuchsia-background{background-color:#fa00fa}
351.gray{color:#606060}
352.gray-background{background-color:#7d7d7d}
353.green{color:#006000}
354.green-background{background-color:#007d00}
355.lime{color:#00bf00}
356.lime-background{background-color:#00fa00}
357.maroon{color:#600000}
358.maroon-background{background-color:#7d0000}
359.navy{color:#000060}
360.navy-background{background-color:#00007d}
361.olive{color:#606000}
362.olive-background{background-color:#7d7d00}
363.purple{color:#600060}
364.purple-background{background-color:#7d007d}
365.red{color:#bf0000}
366.red-background{background-color:#fa0000}
367.silver{color:#909090}
368.silver-background{background-color:#bcbcbc}
369.teal{color:#006060}
370.teal-background{background-color:#007d7d}
371.white{color:#bfbfbf}
372.white-background{background-color:#fafafa}
373.yellow{color:#bfbf00}
374.yellow-background{background-color:#fafa00}
375span.icon>.fa{cursor:default}
376a span.icon>.fa{cursor:inherit}
377.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
378.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
379.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
380.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
381.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
382.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
383.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
384.conum[data-value] *{color:#fff!important}
385.conum[data-value]+b{display:none}
386.conum[data-value]::after{content:attr(data-value)}
387pre .conum[data-value]{position:relative;top:-.125em}
388b.conum *{color:inherit!important}
389.conum:not([data-value]):empty{display:none}
390dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
392p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
393p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
394p{margin-bottom:1.25rem}
395.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
396.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
397.print-only{display:none!important}
398@page{margin:1.25cm .75cm}
399@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
400html{font-size:80%}
401a{color:inherit!important;text-decoration:underline!important}
402a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
403a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
404abbr[title]::after{content:" (" attr(title) ")"}
405pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
406thead{display:table-header-group}
407svg{max-width:100%}
408p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
409h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
410#toc,.sidebarblock,.exampleblock>.content{background:none!important}
411#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
412body.book #header{text-align:center}
413body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
414body.book #header .details{border:0!important;display:block;padding:0!important}
415body.book #header .details span:first-child{margin-left:0!important}
416body.book #header .details br{display:block}
417body.book #header .details br+span::before{content:none!important}
418body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
419body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
420.listingblock code[data-lang]::before{display:block}
421#footer{padding:0 .9375em}
422.hide-on-print{display:none!important}
423.print-only{display:block!important}
424.hide-for-print{display:none!important}
425.show-for-print{display:inherit!important}}
426@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
427.sect1{padding:0!important}
428.sect1+.sect1{border:0}
429#footer{background:none}
430#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
431@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
432</style>
433<style>
434.listingblock .pygments .hll { background-color: #ffffcc }
435.listingblock .pygments, .listingblock .pygments code { background: #f8f8f8; }
436.listingblock .pygments .tok-c { color: #408080; font-style: italic } /* Comment */
437.listingblock .pygments .tok-err { border: 1px solid #FF0000 } /* Error */
438.listingblock .pygments .tok-k { color: #008000; font-weight: bold } /* Keyword */
439.listingblock .pygments .tok-o { color: #666666 } /* Operator */
440.listingblock .pygments .tok-ch { color: #408080; font-style: italic } /* Comment.Hashbang */
441.listingblock .pygments .tok-cm { color: #408080; font-style: italic } /* Comment.Multiline */
442.listingblock .pygments .tok-cp { color: #BC7A00 } /* Comment.Preproc */
443.listingblock .pygments .tok-cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
444.listingblock .pygments .tok-c1 { color: #408080; font-style: italic } /* Comment.Single */
445.listingblock .pygments .tok-cs { color: #408080; font-style: italic } /* Comment.Special */
446.listingblock .pygments .tok-gd { color: #A00000 } /* Generic.Deleted */
447.listingblock .pygments .tok-ge { font-style: italic } /* Generic.Emph */
448.listingblock .pygments .tok-gr { color: #FF0000 } /* Generic.Error */
449.listingblock .pygments .tok-gh { color: #000080; font-weight: bold } /* Generic.Heading */
450.listingblock .pygments .tok-gi { color: #00A000 } /* Generic.Inserted */
451.listingblock .pygments .tok-go { color: #888888 } /* Generic.Output */
452.listingblock .pygments .tok-gp { color: #000080; font-weight: bold } /* Generic.Prompt */
453.listingblock .pygments .tok-gs { font-weight: bold } /* Generic.Strong */
454.listingblock .pygments .tok-gu { color: #800080; font-weight: bold } /* Generic.Subheading */
455.listingblock .pygments .tok-gt { color: #0044DD } /* Generic.Traceback */
456.listingblock .pygments .tok-kc { color: #008000; font-weight: bold } /* Keyword.Constant */
457.listingblock .pygments .tok-kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
458.listingblock .pygments .tok-kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
459.listingblock .pygments .tok-kp { color: #008000 } /* Keyword.Pseudo */
460.listingblock .pygments .tok-kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
461.listingblock .pygments .tok-kt { color: #B00040 } /* Keyword.Type */
462.listingblock .pygments .tok-m { color: #666666 } /* Literal.Number */
463.listingblock .pygments .tok-s { color: #BA2121 } /* Literal.String */
464.listingblock .pygments .tok-na { color: #7D9029 } /* Name.Attribute */
465.listingblock .pygments .tok-nb { color: #008000 } /* Name.Builtin */
466.listingblock .pygments .tok-nc { color: #0000FF; font-weight: bold } /* Name.Class */
467.listingblock .pygments .tok-no { color: #880000 } /* Name.Constant */
468.listingblock .pygments .tok-nd { color: #AA22FF } /* Name.Decorator */
469.listingblock .pygments .tok-ni { color: #999999; font-weight: bold } /* Name.Entity */
470.listingblock .pygments .tok-ne { color: #D2413A; font-weight: bold } /* Name.Exception */
471.listingblock .pygments .tok-nf { color: #0000FF } /* Name.Function */
472.listingblock .pygments .tok-nl { color: #A0A000 } /* Name.Label */
473.listingblock .pygments .tok-nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
474.listingblock .pygments .tok-nt { color: #008000; font-weight: bold } /* Name.Tag */
475.listingblock .pygments .tok-nv { color: #19177C } /* Name.Variable */
476.listingblock .pygments .tok-ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
477.listingblock .pygments .tok-w { color: #bbbbbb } /* Text.Whitespace */
478.listingblock .pygments .tok-mb { color: #666666 } /* Literal.Number.Bin */
479.listingblock .pygments .tok-mf { color: #666666 } /* Literal.Number.Float */
480.listingblock .pygments .tok-mh { color: #666666 } /* Literal.Number.Hex */
481.listingblock .pygments .tok-mi { color: #666666 } /* Literal.Number.Integer */
482.listingblock .pygments .tok-mo { color: #666666 } /* Literal.Number.Oct */
483.listingblock .pygments .tok-sa { color: #BA2121 } /* Literal.String.Affix */
484.listingblock .pygments .tok-sb { color: #BA2121 } /* Literal.String.Backtick */
485.listingblock .pygments .tok-sc { color: #BA2121 } /* Literal.String.Char */
486.listingblock .pygments .tok-dl { color: #BA2121 } /* Literal.String.Delimiter */
487.listingblock .pygments .tok-sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
488.listingblock .pygments .tok-s2 { color: #BA2121 } /* Literal.String.Double */
489.listingblock .pygments .tok-se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
490.listingblock .pygments .tok-sh { color: #BA2121 } /* Literal.String.Heredoc */
491.listingblock .pygments .tok-si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
492.listingblock .pygments .tok-sx { color: #008000 } /* Literal.String.Other */
493.listingblock .pygments .tok-sr { color: #BB6688 } /* Literal.String.Regex */
494.listingblock .pygments .tok-s1 { color: #BA2121 } /* Literal.String.Single */
495.listingblock .pygments .tok-ss { color: #19177C } /* Literal.String.Symbol */
496.listingblock .pygments .tok-bp { color: #008000 } /* Name.Builtin.Pseudo */
497.listingblock .pygments .tok-fm { color: #0000FF } /* Name.Function.Magic */
498.listingblock .pygments .tok-vc { color: #19177C } /* Name.Variable.Class */
499.listingblock .pygments .tok-vg { color: #19177C } /* Name.Variable.Global */
500.listingblock .pygments .tok-vi { color: #19177C } /* Name.Variable.Instance */
501.listingblock .pygments .tok-vm { color: #19177C } /* Name.Variable.Magic */
502.listingblock .pygments .tok-il { color: #666666 } /* Literal.Number.Integer.Long */
503</style>
504</head>
505<body class="article toc2 toc-left">
506<div id="header">
507<h1>Boost.Predef</h1>
508<div class="details">
509<span id="author" class="author">Rene Rivera</span><br>
510</div>
511<div id="toc" class="toc2">
512<div id="toctitle">Table of Contents</div>
513<ul class="sectlevel1">
514<li><a href="#_introduction">1. Introduction</a>
515<ul class="sectlevel2">
516<li><a href="#_proposal">1.1. Proposal</a></li>
517<li><a href="#_current_library">1.2. Current Library</a></li>
518<li><a href="#_design_choices">1.3. Design choices</a></li>
519<li><a href="#_future_work">1.4. Future work</a></li>
520</ul>
521</li>
522<li><a href="#_using_the_predefs">2. Using the predefs</a>
523<ul class="sectlevel2">
524<li><a href="#_the_emulated_macros">2.1. The <code>*_EMULATED</code> macros</a></li>
525<li><a href="#_using_the_boost_version_number_macro">2.2. Using the <code>BOOST_VERSION_NUMBER</code> macro</a></li>
526</ul>
527</li>
528<li><a href="#_adding_new_predefs">3. Adding new predefs</a>
529<ul class="sectlevel2">
530<li><a href="#_requirements_of_the_header">3.1. Requirements of the header</a></li>
531<li><a href="#_structure_of_the_header">3.2. Structure of the header</a></li>
532<li><a href="#_adding_exclusive_predefs">3.3. Adding exclusive predefs</a></li>
533<li><a href="#_adding_an_exclusive_but_emulated_predef">3.4. Adding an exclusive but emulated predef</a></li>
534<li><a href="#_using_utility_pattern_macros">3.5. Using utility pattern macros</a></li>
535</ul>
536</li>
537<li><a href="#_reference">4. Reference</a>
538<ul class="sectlevel2">
539<li><a href="#_boost_arch_architecture_macros">4.1. <code>BOOST_ARCH</code> architecture macros</a>
540<ul class="sectlevel3">
541<li><a href="#_boost_arch_alpha">4.1.1. <code>BOOST_ARCH_ALPHA</code></a></li>
542<li><a href="#_boost_arch_arm">4.1.2. <code>BOOST_ARCH_ARM</code></a></li>
543<li><a href="#_boost_arch_blackfin">4.1.3. <code>BOOST_ARCH_BLACKFIN</code></a></li>
544<li><a href="#_boost_arch_convex">4.1.4. <code>BOOST_ARCH_CONVEX</code></a></li>
545<li><a href="#_boost_arch_ia64">4.1.5. <code>BOOST_ARCH_IA64</code></a></li>
546<li><a href="#_boost_arch_m68k">4.1.6. <code>BOOST_ARCH_M68K</code></a></li>
547<li><a href="#_boost_arch_mips">4.1.7. <code>BOOST_ARCH_MIPS</code></a></li>
548<li><a href="#_boost_arch_parisc">4.1.8. <code>BOOST_ARCH_PARISC</code></a></li>
549<li><a href="#_boost_arch_ppc">4.1.9. <code>BOOST_ARCH_PPC</code></a></li>
550<li><a href="#_boost_arch_ptx">4.1.10. <code>BOOST_ARCH_PTX</code></a></li>
551<li><a href="#_boost_arch_pyramid">4.1.11. <code>BOOST_ARCH_PYRAMID</code></a></li>
552<li><a href="#_boost_arch_riscv">4.1.12. <code>BOOST_ARCH_RISCV</code></a></li>
553<li><a href="#_boost_arch_rs6000">4.1.13. <code>BOOST_ARCH_RS6000</code></a></li>
554<li><a href="#_boost_arch_sparc">4.1.14. <code>BOOST_ARCH_SPARC</code></a></li>
555<li><a href="#_boost_arch_sh">4.1.15. <code>BOOST_ARCH_SH</code></a></li>
556<li><a href="#_boost_arch_sys370">4.1.16. <code>BOOST_ARCH_SYS370</code></a></li>
557<li><a href="#_boost_arch_sys390">4.1.17. <code>BOOST_ARCH_SYS390</code></a></li>
558<li><a href="#_boost_arch_x86">4.1.18. <code>BOOST_ARCH_X86</code></a></li>
559<li><a href="#_boost_arch_z">4.1.19. <code>BOOST_ARCH_Z</code></a></li>
560<li><a href="#_boost_arch_x86_32">4.1.20. <code>BOOST_ARCH_X86_32</code></a></li>
561<li><a href="#_boost_arch_x86_64">4.1.21. <code>BOOST_ARCH_X86_64</code></a></li>
562</ul>
563</li>
564<li><a href="#_boost_comp_compiler_macros">4.2. <code>BOOST_COMP</code> compiler macros</a>
565<ul class="sectlevel3">
566<li><a href="#_boost_comp_borland">4.2.1. <code>BOOST_COMP_BORLAND</code></a></li>
567<li><a href="#_boost_comp_clang">4.2.2. <code>BOOST_COMP_CLANG</code></a></li>
568<li><a href="#_boost_comp_como">4.2.3. <code>BOOST_COMP_COMO</code></a></li>
569<li><a href="#_boost_comp_dec">4.2.4. <code>BOOST_COMP_DEC</code></a></li>
570<li><a href="#_boost_comp_diab">4.2.5. <code>BOOST_COMP_DIAB</code></a></li>
571<li><a href="#_boost_comp_dmc">4.2.6. <code>BOOST_COMP_DMC</code></a></li>
572<li><a href="#_boost_comp_sysc">4.2.7. <code>BOOST_COMP_SYSC</code></a></li>
573<li><a href="#_boost_comp_edg">4.2.8. <code>BOOST_COMP_EDG</code></a></li>
574<li><a href="#_boost_comp_path">4.2.9. <code>BOOST_COMP_PATH</code></a></li>
575<li><a href="#_boost_comp_gnuc">4.2.10. <code>BOOST_COMP_GNUC</code></a></li>
576<li><a href="#_boost_comp_gccxml">4.2.11. <code>BOOST_COMP_GCCXML</code></a></li>
577<li><a href="#_boost_comp_ghs">4.2.12. <code>BOOST_COMP_GHS</code></a></li>
578<li><a href="#_boost_comp_hpacc">4.2.13. <code>BOOST_COMP_HPACC</code></a></li>
579<li><a href="#_boost_comp_iar">4.2.14. <code>BOOST_COMP_IAR</code></a></li>
580<li><a href="#_boost_comp_ibm">4.2.15. <code>BOOST_COMP_IBM</code></a></li>
581<li><a href="#_boost_comp_intel">4.2.16. <code>BOOST_COMP_INTEL</code></a></li>
582<li><a href="#_boost_comp_kcc">4.2.17. <code>BOOST_COMP_KCC</code></a></li>
583<li><a href="#_boost_comp_llvm">4.2.18. <code>BOOST_COMP_LLVM</code></a></li>
584<li><a href="#_boost_comp_highc">4.2.19. <code>BOOST_COMP_HIGHC</code></a></li>
585<li><a href="#_boost_comp_mwerks">4.2.20. <code>BOOST_COMP_MWERKS</code></a></li>
586<li><a href="#_boost_comp_mri">4.2.21. <code>BOOST_COMP_MRI</code></a></li>
587<li><a href="#_boost_comp_mpw">4.2.22. <code>BOOST_COMP_MPW</code></a></li>
588<li><a href="#_boost_comp_nvcc">4.2.23. <code>BOOST_COMP_NVCC</code></a></li>
589<li><a href="#_boost_comp_palm">4.2.24. <code>BOOST_COMP_PALM</code></a></li>
590<li><a href="#_boost_comp_pgi">4.2.25. <code>BOOST_COMP_PGI</code></a></li>
591<li><a href="#_boost_comp_sgi">4.2.26. <code>BOOST_COMP_SGI</code></a></li>
592<li><a href="#_boost_comp_sunpro">4.2.27. <code>BOOST_COMP_SUNPRO</code></a></li>
593<li><a href="#_boost_comp_tendra">4.2.28. <code>BOOST_COMP_TENDRA</code></a></li>
594<li><a href="#_boost_comp_msvc">4.2.29. <code>BOOST_COMP_MSVC</code></a></li>
595<li><a href="#_boost_comp_watcom">4.2.30. <code>BOOST_COMP_WATCOM</code></a></li>
596</ul>
597</li>
598<li><a href="#_boost_lang_language_standards_macros">4.3. <code>BOOST_LANG</code> language standards macros</a>
599<ul class="sectlevel3">
600<li><a href="#_boost_lang_cuda">4.3.1. <code>BOOST_LANG_CUDA</code></a></li>
601<li><a href="#_boost_lang_objc">4.3.2. <code>BOOST_LANG_OBJC</code></a></li>
602<li><a href="#_boost_lang_stdc">4.3.3. <code>BOOST_LANG_STDC</code></a></li>
603<li><a href="#_boost_lang_stdcpp">4.3.4. <code>BOOST_LANG_STDCPP</code></a></li>
604<li><a href="#_boost_lang_stdcppcli">4.3.5. <code>BOOST_LANG_STDCPPCLI</code></a></li>
605<li><a href="#_boost_lang_stdecpp">4.3.6. <code>BOOST_LANG_STDECPP</code></a></li>
606</ul>
607</li>
608<li><a href="#_boost_lib_library_macros">4.4. <code>BOOST_LIB</code> library macros</a>
609<ul class="sectlevel3">
610<li><a href="#_boost_lib_c_cloudabi">4.4.1. <code>BOOST_LIB_C_CLOUDABI</code></a></li>
611<li><a href="#_boost_lib_c_gnu">4.4.2. <code>BOOST_LIB_C_GNU</code></a></li>
612<li><a href="#_boost_lib_c_uc">4.4.3. <code>BOOST_LIB_C_UC</code></a></li>
613<li><a href="#_boost_lib_c_vms">4.4.4. <code>BOOST_LIB_C_VMS</code></a></li>
614<li><a href="#_boost_lib_c_zos">4.4.5. <code>BOOST_LIB_C_ZOS</code></a></li>
615<li><a href="#_boost_lib_std_cxx">4.4.6. <code>BOOST_LIB_STD_CXX</code></a></li>
616<li><a href="#_boost_lib_std_dinkumware">4.4.7. <code>BOOST_LIB_STD_DINKUMWARE</code></a></li>
617<li><a href="#_boost_lib_std_como">4.4.8. <code>BOOST_LIB_STD_COMO</code></a></li>
618<li><a href="#_boost_lib_std_msipl">4.4.9. <code>BOOST_LIB_STD_MSIPL</code></a></li>
619<li><a href="#_boost_lib_std_msl">4.4.10. <code>BOOST_LIB_STD_MSL</code></a></li>
620<li><a href="#_boost_lib_std_rw">4.4.11. <code>BOOST_LIB_STD_RW</code></a></li>
621<li><a href="#_boost_lib_std_sgi">4.4.12. <code>BOOST_LIB_STD_SGI</code></a></li>
622<li><a href="#_boost_lib_std_gnu">4.4.13. <code>BOOST_LIB_STD_GNU</code></a></li>
623<li><a href="#_boost_lib_std_stlport">4.4.14. <code>BOOST_LIB_STD_STLPORT</code></a></li>
624<li><a href="#_boost_lib_std_ibm">4.4.15. <code>BOOST_LIB_STD_IBM</code></a></li>
625</ul>
626</li>
627<li><a href="#_boost_os_operating_system_macros">4.5. <code>BOOST_OS</code> operating system macros</a>
628<ul class="sectlevel3">
629<li><a href="#_boost_os_aix">4.5.1. <code>BOOST_OS_AIX</code></a></li>
630<li><a href="#_boost_os_amigaos">4.5.2. <code>BOOST_OS_AMIGAOS</code></a></li>
631<li><a href="#_boost_os_beos">4.5.3. <code>BOOST_OS_BEOS</code></a></li>
632<li><a href="#_boost_os_bsd">4.5.4. <code>BOOST_OS_BSD</code></a></li>
633<li><a href="#_boost_os_cygwin">4.5.5. <code>BOOST_OS_CYGWIN</code></a></li>
634<li><a href="#_boost_os_haiku">4.5.6. <code>BOOST_OS_HAIKU</code></a></li>
635<li><a href="#_boost_os_hpux">4.5.7. <code>BOOST_OS_HPUX</code></a></li>
636<li><a href="#_boost_os_ios">4.5.8. <code>BOOST_OS_IOS</code></a></li>
637<li><a href="#_boost_os_irix">4.5.9. <code>BOOST_OS_IRIX</code></a></li>
638<li><a href="#_boost_os_linux">4.5.10. <code>BOOST_OS_LINUX</code></a></li>
639<li><a href="#_boost_os_macos">4.5.11. <code>BOOST_OS_MACOS</code></a></li>
640<li><a href="#_boost_os_os400">4.5.12. <code>BOOST_OS_OS400</code></a></li>
641<li><a href="#_boost_os_qnx">4.5.13. <code>BOOST_OS_QNX</code></a></li>
642<li><a href="#_boost_os_solaris">4.5.14. <code>BOOST_OS_SOLARIS</code></a></li>
643<li><a href="#_boost_os_unix">4.5.15. <code>BOOST_OS_UNIX</code></a></li>
644<li><a href="#_boost_os_svr4">4.5.16. <code>BOOST_OS_SVR4</code></a></li>
645<li><a href="#_boost_os_vms">4.5.17. <code>BOOST_OS_VMS</code></a></li>
646<li><a href="#_boost_os_windows">4.5.18. <code>BOOST_OS_WINDOWS</code></a></li>
647<li><a href="#_boost_os_bsd_bsdi">4.5.19. <code>BOOST_OS_BSD_BSDI</code></a></li>
648<li><a href="#_boost_os_bsd_dragonfly">4.5.20. <code>BOOST_OS_BSD_DRAGONFLY</code></a></li>
649<li><a href="#_boost_os_bsd_free">4.5.21. <code>BOOST_OS_BSD_FREE</code></a></li>
650<li><a href="#_boost_os_bsd_net">4.5.22. <code>BOOST_OS_BSD_NET</code></a></li>
651<li><a href="#_boost_os_bsd_open">4.5.23. <code>BOOST_OS_BSD_OPEN</code></a></li>
652</ul>
653</li>
654<li><a href="#_boost_plat_platform_macros">4.6. <code>BOOST_PLAT</code> platform macros</a>
655<ul class="sectlevel3">
656<li><a href="#_boost_plat_android">4.6.1. <code>BOOST_PLAT_ANDROID</code></a></li>
657<li><a href="#_boost_plat_cloudabi">4.6.2. <code>BOOST_PLAT_CLOUDABI</code></a></li>
658<li><a href="#_boost_plat_ios_device">4.6.3. <code>BOOST_PLAT_IOS_DEVICE</code></a></li>
659<li><a href="#_boost_plat_ios_simulator">4.6.4. <code>BOOST_PLAT_IOS_SIMULATOR</code></a></li>
660<li><a href="#_boost_plat_mingw">4.6.5. <code>BOOST_PLAT_MINGW</code></a></li>
661<li><a href="#_boost_plat_mingw32">4.6.6. <code>BOOST_PLAT_MINGW32</code></a></li>
662<li><a href="#_boost_plat_mingw64">4.6.7. <code>BOOST_PLAT_MINGW64</code></a></li>
663<li><a href="#_boost_plat_windows_desktop">4.6.8. <code>BOOST_PLAT_WINDOWS_DESKTOP</code></a></li>
664<li><a href="#_boost_plat_windows_phone">4.6.9. <code>BOOST_PLAT_WINDOWS_PHONE</code></a></li>
665<li><a href="#_boost_plat_windows_runtime">4.6.10. <code>BOOST_PLAT_WINDOWS_RUNTIME</code></a></li>
666<li><a href="#_boost_plat_windows_server">4.6.11. <code>BOOST_PLAT_WINDOWS_SERVER</code></a></li>
667<li><a href="#_boost_plat_windows_store">4.6.12. <code>BOOST_PLAT_WINDOWS_STORE</code></a></li>
668<li><a href="#_boost_plat_windows_system">4.6.13. <code>BOOST_PLAT_WINDOWS_SYSTEM</code></a></li>
669<li><a href="#_boost_plat_windows_uwp">4.6.14. <code>BOOST_PLAT_WINDOWS_UWP</code></a></li>
670</ul>
671</li>
672<li><a href="#_boost_hw_hardware_macros">4.7. <code>BOOST_HW</code> hardware macros</a>
673<ul class="sectlevel3">
674<li><a href="#_using_the_boost_hw_simd_predefs">4.7.1. Using the <code>BOOST_HW_SIMD_*</code> predefs</a></li>
675<li><a href="#_boost_hw_simd_arm">4.7.2. <code>BOOST_HW_SIMD_ARM</code></a></li>
676<li><a href="#_boost_hw_simd_arm_version">4.7.3. <code>BOOST_HW_SIMD_ARM_*_VERSION</code></a></li>
677<li><a href="#_boost_hw_simd_ppc">4.7.4. <code>BOOST_HW_SIMD_PPC</code></a></li>
678<li><a href="#_boost_hw_simd_ppc_version">4.7.5. <code>BOOST_HW_SIMD_PPC_*_VERSION</code></a></li>
679<li><a href="#_boost_hw_simd_x86">4.7.6. <code>BOOST_HW_SIMD_X86</code></a></li>
680<li><a href="#_boost_hw_simd_x86_version">4.7.7. <code>BOOST_HW_SIMD_X86_*_VERSION</code></a></li>
681<li><a href="#_boost_hw_simd_x86_amd">4.7.8. <code>BOOST_HW_SIMD_X86_AMD</code></a></li>
682<li><a href="#_boost_hw_simd_x86_amd_version">4.7.9. <code>BOOST_HW_SIMD_X86_AMD_*_VERSION</code></a></li>
683</ul>
684</li>
685<li><a href="#_other_macros">4.8. Other macros</a>
686<ul class="sectlevel3">
687<li><a href="#_boost_endian">4.8.1. <code>BOOST_ENDIAN_*</code></a></li>
688<li><a href="#_boost_predef_workaround">4.8.2. <code>BOOST_PREDEF_WORKAROUND</code></a></li>
689<li><a href="#_boost_predef_tested_at">4.8.3. <code>BOOST_PREDEF_TESTED_AT</code></a></li>
690</ul>
691</li>
692<li><a href="#_version_definition_macros">4.9. Version definition macros</a>
693<ul class="sectlevel3">
694<li><a href="#_boost_version_number">4.9.1. <code>BOOST_VERSION_NUMBER</code></a></li>
695<li><a href="#_boost_predef_make_macros">4.9.2. <code>BOOST_PREDEF_MAKE_..</code> macros</a></li>
696<li><a href="#_boost_predef_make_date_macros">4.9.3. <code>BOOST_PREDEF_MAKE_*..</code> date macros</a></li>
697</ul>
698</li>
699</ul>
700</li>
701<li><a href="#_check_utilities">5. Check Utilities</a>
702<ul class="sectlevel2">
703<li><a href="#_predef_check_programs">5.1. <code>predef_check</code> programs</a></li>
704<li><a href="#_using_with_boost_build">5.2. Using with Boost.Build</a></li>
705</ul>
706</li>
707<li><a href="#_history">6. History</a>
708<ul class="sectlevel2">
709<li><a href="#_1_11">6.1. 1.11</a></li>
710<li><a href="#_1_10">6.2. 1.10</a></li>
711<li><a href="#_1_9">6.3. 1.9</a></li>
712<li><a href="#_1_8">6.4. 1.8</a></li>
713<li><a href="#_1_7">6.5. 1.7</a></li>
714<li><a href="#_1_6">6.6. 1.6</a></li>
715<li><a href="#_1_5">6.7. 1.5</a></li>
716<li><a href="#_1_4_1">6.8. 1.4.1</a></li>
717<li><a href="#_1_4">6.9. 1.4</a></li>
718<li><a href="#_1_3">6.10. 1.3</a></li>
719<li><a href="#_1_2">6.11. 1.2</a></li>
720<li><a href="#_1_1">6.12. 1.1</a></li>
721</ul>
722</li>
723<li><a href="#_to_do">7. To Do</a></li>
724<li><a href="#_acknowledgements">8. Acknowledgements</a></li>
725<li><a href="#_colophon">Colophon</a></li>
726</ul>
727</div>
728</div>
729<div id="content">
730<div id="preamble">
731<div class="sectionbody">
732<style>
733/*
734Copyright 2018-2019 Rene Rivera
735Distributed under the Boost Software License, Version 1.0.
736(See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
737*/
738.admonitionblock .icon .title {
739	font-size: 2.5em;
740	text-shadow: 1px 1px 2px rgba(0, 0, 0, .5);
741}
742.caution .icon .title {
743	color: rgba(192, 51, 0, 1);
744}
745.important .icon .title {
746	color: rgba(192, 0, 0, 1);
747}
748.note .icon .title {
749	color: rgba(26, 64, 128, 1);
750}
751.tip .icon .title {
752	color: rgba(255, 192, 0, 1);
753}
754.warning .icon .title {
755	color: rgba(192, 102, 0, 1);
756}
757p,blockquote,dt,td.content,span.alt {
758    font-size: 1.1rem
759}
760h1, h2, h3, h4, h5, h6 {
761    font-weight: bold;
762}
763h1 {
764    font-size: 2.25em;
765}
766h2 {
767    font-size: 1.5em;
768}
769h3,#toctitle,.sidebarblock>.content>.title {
770    font-size: 1.3em;
771}
772h4, h5 {
773    font-size: 1.2em;
774}
775h6 {
776    font-size: 1.1em;
777}
778</style>
779</div>
780</div>
781<div class="sect1">
782<h2 id="_introduction"><a class="anchor" href="#_introduction"></a>1. Introduction</h2>
783<div class="sectionbody">
784<div class="paragraph">
785<p>This library defines a set of compiler, architecture, operating system,
786library, and other version numbers from the information it can gather of
787C, C++, Objective C, and Objective C++ predefined macros or those defined
788in generally available headers. The idea for this library grew out of a
789proposal to extend the Boost Config library to provide more, and consistent,
790information than the feature definitions it supports. What follows is
791an edited version of that brief proposal.</p>
792</div>
793<div class="sect2">
794<h3 id="_proposal"><a class="anchor" href="#_proposal"></a>1.1. Proposal</h3>
795<div class="paragraph">
796<p>The idea is to define a set of macros to identify compilers and
797consistently represent their version. This includes:</p>
798</div>
799<div class="ulist">
800<ul>
801<li>
802<p>A unique BOOST_VERSION_NUMBER(major,minor,patch) macro to specify version
803numbers (unfortunately, the name BOOST_VERSION is already taken to designate
804the version number of boost itself).</p>
805</li>
806<li>
807<p>A compiler identification macro, suitable for use in <code>#if</code>/<code>#elif</code> directives,
808for each of the supported compilers. All macros would be defined, regardless
809of the compiler. The one macro corresponding to the compiler being used would
810be defined, in terms of BOOST_VERSION_NUMBER, to carry the exact compiler
811version. All other macros would expand to an expression evaluating to false
812(for instance, the token 0) to indicate that the corresponding compiler is not
813present.</p>
814</li>
815<li>
816<p>"Null values" could be set, for all macros, in
817boost/config/select_compiler.hpp; then, for each compiler the corresponding
818identification macro would be #undef and re-#defined in the corresponding
819boost/compiler/(cc).hpp; however in the context of the Boost.Config
820infrastructure using a "prefix" header (to be introduced) or
821boost/config/suffix.hpp is a better solution.</p>
822</li>
823</ul>
824</div>
825</div>
826<div class="sect2">
827<h3 id="_current_library"><a class="anchor" href="#_current_library"></a>1.2. Current Library</h3>
828<div class="paragraph">
829<p>The current Predef library is now, both an independent library, and expanded
830in scope. It includes detection and definition of architectures, compilers,
831languages, libraries, operating systems, and endianness. The key benefits are:</p>
832</div>
833<div class="ulist">
834<ul>
835<li>
836<p>Version numbers that are always defined so that one doesn&#8217;t have to guard
837with <code>#ifdef</code>.</p>
838</li>
839<li>
840<p>Guard macros that can be used for <code>#ifdef</code> checks.</p>
841</li>
842<li>
843<p>All possible definitions are included with the single <code>#include &lt;boost/predef.h&gt;</code>
844so that it&#8217;s friendly to pre-compiled header usage.</p>
845</li>
846<li>
847<p>Specific definitions can be included, ex. <code>#include &lt;boost/predef/os/windows.h&gt;</code>
848for single checks.</p>
849</li>
850<li>
851<p>Predefs can be directly used in both preprocessor and compiler expressions
852for comparison to other similarly defined values.</p>
853</li>
854<li>
855<p>The headers are usable from multiple languages, that support the C preprocessor.
856In particular C++, C, Objective C, and Objective C++.</p>
857</li>
858</ul>
859</div>
860</div>
861<div class="sect2">
862<h3 id="_design_choices"><a class="anchor" href="#_design_choices"></a>1.3. Design choices</h3>
863<div class="paragraph">
864<p>An important design choice concerns how to represent compiler versions by means
865of a single integer number suitable for use in preprocessing directives. Let&#8217;s
866do some calculation. The "basic" signed type for preprocessing
867constant-expressions is long in C90 (and C++, as of 2006) and intmax_t in C99.
868The type long shall at least be able to represent the number <code>+2 147 483 647</code>.
869This means the most significant digit can only be 0, 1 or 2; and if we want all
870decimal digits to be able to vary between 0 and 9, the largest range we can
871consider is <code>[0, 999 999 999\</code>]. Distributing evenly, this means 3 decimal
872digits for each version number part.</p>
873</div>
874<div class="paragraph">
875<p>So we can:</p>
876</div>
877<div class="olist arabic">
878<ol class="arabic">
879<li>
880<p>use an uneven distribution or</p>
881</li>
882<li>
883<p>use more bits (a larger type) or</p>
884</li>
885<li>
886<p>use 3/3/3 and have the particular compiler/platform/stdlib deal with setting
887the numbers within the 3-digit range.</p>
888</li>
889</ol>
890</div>
891<div class="paragraph">
892<p>It appears relatively safe to go for the first option and set it at 2/2/5. That
893covers CodeWarrior and others, which are up to and past 10 for the major number.
894Some compilers use the build number in lieu of the patch one; five digits
895(which is already reached by VC++ 8) seems a reasonable limit even in this case.</p>
896</div>
897<div class="admonitionblock note">
898<table>
899<tr>
900<td class="icon">
901<div class="title">ℹ</div>
902</td>
903<td class="content">
904A 2/2/6 scheme would allow for bigger patch/build numbers at the cost,
905for instance, of limiting the major version number to 20 (or, with further
906constraints, to 21).
907</td>
908</tr>
909</table>
910</div>
911<div class="paragraph">
912<p>It might reassure the reader that this decision is actually encoded in one place
913in the code; the definition of <code>BOOST_VERSION_NUMBER</code>.</p>
914</div>
915</div>
916<div class="sect2">
917<h3 id="_future_work"><a class="anchor" href="#_future_work"></a>1.4. Future work</h3>
918<div class="paragraph">
919<p>Even though the basics of this library are done, there is much work that can be
920done:</p>
921</div>
922<div class="ulist">
923<ul>
924<li>
925<p>Right now we limit the detection of libraries to known built-in predefined
926macros, and to guaranteed to exist system and library headers. It might be
927interesting to add something like auto-configuration predefs. This way we can
928add definitions for user specific libraries and features.</p>
929</li>
930<li>
931<p>Along with the above, it might be good to add some user control as to which
932headers are included with the top-level header. Although in the current
933form of the library this is less of an issue as one can include the
934specific headers one needs.</p>
935</li>
936<li>
937<p>Additionally, even if there is no auto-configure style option.. It would be
938good to add optionally included headers so that user can get consistent
939version number definitions for libraries they use.</p>
940</li>
941<li>
942<p>And obviously there&#8217;s lots of work to do in reformulating the existing
943Boost libraries to use the Predef library.</p>
944</li>
945<li>
946<p>And there&#8217;s the continuing work of adding definitions for present and
947future compilers, platforms, architectures, languages, and libraries.</p>
948</li>
949</ul>
950</div>
951</div>
952</div>
953</div>
954<div class="sect1">
955<h2 id="_using_the_predefs"><a class="anchor" href="#_using_the_predefs"></a>2. Using the predefs</h2>
956<div class="sectionbody">
957<div class="paragraph">
958<p>To use the automatically defined predefs one needs to only include the
959single top-level header:</p>
960</div>
961<div class="listingblock">
962<div class="content">
963<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef.h&gt;</span><span class="tok-cp"></span></code></pre>
964</div>
965</div>
966<div class="paragraph">
967<p>This defines [*all] the version macros known to the library. For each
968macro it will be defined to either a`<em>zero</em>`valued expression for when
969the particular item is not detected, and to a`<em>positive</em>`value if it
970is detected. The predef macros fall onto five categories each with
971macros of a particular prefix:</p>
972</div>
973<div class="ulist">
974<ul>
975<li>
976<p><code>BOOST_ARCH_</code> for system/CPU architecture one is compiling for.</p>
977</li>
978<li>
979<p><code>BOOST_COMP_</code> for the compiler one is using.</p>
980</li>
981<li>
982<p><code>BOOST_LANG_</code> for language standards one is compiling against.</p>
983</li>
984<li>
985<p><code>BOOST_LIB_C_</code> and <code>BOOST_LIB_STD_</code> for the C and C++ standard library
986in use.</p>
987</li>
988<li>
989<p><code>BOOST_OS_</code> for the operating system we are compiling to.</p>
990</li>
991<li>
992<p><code>BOOST_PLAT_</code> for platforms on top of operating system or compilers.</p>
993</li>
994<li>
995<p><code>BOOST_ENDIAN_</code> for endianness of the os and architecture combination.</p>
996</li>
997<li>
998<p><code>BOOST_HW_</code> for hardware specific features.</p>
999</li>
1000<li>
1001<p><code>BOOST_HW_SIMD</code> for SIMD (Single Instruction Multiple Data) detection.</p>
1002</li>
1003</ul>
1004</div>
1005<div class="admonitionblock note">
1006<table>
1007<tr>
1008<td class="icon">
1009<div class="title">ℹ</div>
1010</td>
1011<td class="content">
1012The detected definitions are for the configuration one is targeting
1013during the compile. In particular in a cross-compile this means the target
1014system, and not the host system.
1015</td>
1016</tr>
1017</table>
1018</div>
1019<div class="paragraph">
1020<p>One uses the individual definitions to compare against specific versions
1021by comparing against the <code>BOOST_VERSION_NUMBER</code> macro. For example, to make
1022a choice based on the version of the GCC C++ compiler one would:</p>
1023</div>
1024<div class="listingblock">
1025<div class="content">
1026<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef.h&gt;</span><span class="tok-cp"></span>
1027<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
1028
1029<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
1030<span class="tok-p">{</span>
1031  <span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-n">BOOST_COMP_GNUC</span> <span class="tok-o">&gt;=</span> <span class="tok-n">BOOST_VERSION_NUMBER</span><span class="tok-p">(</span><span class="tok-mi">4</span><span class="tok-p">,</span><span class="tok-mi">0</span><span class="tok-p">,</span><span class="tok-mi">0</span><span class="tok-p">))</span>
1032    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;GCC compiler is at least version 4.0.0&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
1033  <span class="tok-k">else</span>
1034    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;GCC compiler is at older than version 4.0.0, or not a GCC compiler&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
1035  <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
1036<span class="tok-p">}</span></code></pre>
1037</div>
1038</div>
1039<div class="paragraph">
1040<p>As you might notice above the <code>else</code> clause also covers the case where
1041the particular compiler is not detected. But one can make the test
1042also test for the detection. All predef definitions are defined
1043as a zero (0) expression when not detected. Hence one could use the
1044detection with a natural single condition. For example:</p>
1045</div>
1046<div class="listingblock">
1047<div class="content">
1048<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef.h&gt;</span><span class="tok-cp"></span>
1049<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
1050
1051<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
1052<span class="tok-p">{</span>
1053  <span class="tok-k">if</span> <span class="tok-p">(</span><span class="tok-n">BOOST_COMP_GNUC</span><span class="tok-p">)</span>
1054    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;This is GNU GCC!&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
1055  <span class="tok-k">else</span>
1056    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;Not GNU GCC.&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
1057  <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
1058<span class="tok-p">}</span></code></pre>
1059</div>
1060</div>
1061<div class="paragraph">
1062<p>And since the predef&#8217;s are preprocessor definitions the same is possible
1063from the preprocessor:</p>
1064</div>
1065<div class="listingblock">
1066<div class="content">
1067<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef.h&gt;</span><span class="tok-cp"></span>
1068<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
1069
1070<span class="tok-cp">#if BOOST_COMP_GNUC</span>
1071  <span class="tok-cp">#if BOOST_COMP_GNUC &gt;= BOOST_VERSION_NUMBER(4,0,0)</span>
1072    <span class="tok-k">const</span> <span class="tok-kt">char</span> <span class="tok-o">*</span> <span class="tok-n">the_compiler</span> <span class="tok-o">=</span> <span class="tok-s">&quot;GNU GCC, of at least version 4.&quot;</span>
1073  <span class="tok-cp">#else</span>
1074    <span class="tok-k">const</span> <span class="tok-kt">char</span> <span class="tok-o">*</span> <span class="tok-n">the_compiler</span> <span class="tok-o">=</span> <span class="tok-s">&quot;GNU GCC, less than version 4.&quot;</span>
1075  <span class="tok-cp">#endif</span>
1076<span class="tok-cp">#else</span>
1077  <span class="tok-k">const</span> <span class="tok-kt">char</span> <span class="tok-o">*</span> <span class="tok-n">the_compiler</span> <span class="tok-o">=</span> <span class="tok-s">&quot;Not GNU GCC.&quot;</span>
1078<span class="tok-cp">#endif</span>
1079
1080<span class="tok-kt">int</span> <span class="tok-n">main</span><span class="tok-p">()</span>
1081<span class="tok-p">{</span>
1082  <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">the_compiler</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
1083  <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
1084<span class="tok-p">}</span></code></pre>
1085</div>
1086</div>
1087<div class="paragraph">
1088<p>In addition, for each version macro defined there is an
1089<code>*_AVAILABLE</code> macro defined only when the particular aspect is
1090detected. I.e. a definition equivalent to:</p>
1091</div>
1092<div class="listingblock">
1093<div class="content">
1094<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if BOOST_PREDEF_ABC</span>
1095  <span class="tok-cp">#define BOOST_PREDEF_ABC_AVAILABLE</span>
1096<span class="tok-cp">#endif</span></code></pre>
1097</div>
1098</div>
1099<div class="paragraph">
1100<p>Also for each aspect there is a macro defined with a descriptive
1101name of what the detection is.</p>
1102</div>
1103<div class="sect2">
1104<h3 id="_the_emulated_macros"><a class="anchor" href="#_the_emulated_macros"></a>2.1. The <code>*_EMULATED</code> macros</h3>
1105<div class="paragraph">
1106<p>Predef definitions are guaranteed to be uniquely detected within one category.
1107But there are contexts under which multiple underlying detections are possible.
1108The well known example of this is detection of GCC and MSVC compilers which are
1109commonly emulated by other compilers by defining the same base macros. To
1110account for this detection headers are allowed to define <code>*_EMULATED</code> predefs
1111when this situation is detected. The emulated predefs will be set to the
1112version number of the detection instead of the regular predef macro for that
1113detection. For example MSVC will set <code>BOOST_COMP_MSVC_EMULATED</code> but not set <code>BOOST_COMP_MSVC</code>, and it will also set <code>BOOST_COMP_MSVC_AVAILABLE</code>.</p>
1114</div>
1115</div>
1116<div class="sect2">
1117<h3 id="_using_the_boost_version_number_macro"><a class="anchor" href="#_using_the_boost_version_number_macro"></a>2.2. Using the <code>BOOST_VERSION_NUMBER</code> macro</h3>
1118<div class="paragraph">
1119<p>All the predefs are defined to be a use of the <code>BOOST_VERSION_NUMBER</code> macro.
1120The macro takes individual major, minor, and patch value expressions:</p>
1121</div>
1122<div class="listingblock">
1123<div class="content">
1124<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#define BOOST_VERSION_NUMBER( major, minor, patch ) ...</span></code></pre>
1125</div>
1126</div>
1127<div class="paragraph">
1128<p>The arguments are:</p>
1129</div>
1130<div class="olist arabic">
1131<ol class="arabic">
1132<li>
1133<p>Major version number, as a constant value expression in the range [0,99].</p>
1134</li>
1135<li>
1136<p>Minor version number, as a constant value expression in the range [0,99].</p>
1137</li>
1138<li>
1139<p>Patch-level version number, as a constant value expression in the
1140range [0,99999].</p>
1141</li>
1142</ol>
1143</div>
1144<div class="paragraph">
1145<p>The ranges for each are "enforced" by the use of a modulo ("%"), i.e. truncation,
1146as opposed to a clamp. And hence this means that the limits are enforced only
1147enough to keep from having out-of-range problems. But not enough to prevent
1148other kinds of problems. Like exceeding the range and getting false detections,
1149or non-detections. It is up to the individual predefs to ensure correct
1150usage beyond the range guarantee.</p>
1151</div>
1152<div class="paragraph">
1153<p>The values for the arguments can be any preprocessor valid constant value expression.
1154Only constant value arithmetic is used in the definition of the <code>BOOST_VERSION_NUMBER</code>
1155macro and in any of the other predef macros. This means that any allowed base is
1156possible, i.e. binary, octal, decimal, and hexadecimal. For example:</p>
1157</div>
1158<div class="listingblock">
1159<div class="content">
1160<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,0xA,015)</span></code></pre>
1161</div>
1162</div>
1163<div class="paragraph">
1164<p>Is equivalent to:</p>
1165</div>
1166<div class="listingblock">
1167<div class="content">
1168<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(2,10,13)</span></code></pre>
1169</div>
1170</div>
1171</div>
1172</div>
1173</div>
1174<div class="sect1">
1175<h2 id="_adding_new_predefs"><a class="anchor" href="#_adding_new_predefs"></a>3. Adding new predefs</h2>
1176<div class="sectionbody">
1177<div class="paragraph">
1178<p>We know that a library like this one will be an eternal work-in-progress. And
1179as such we expect, and look forward to, others contributing corrections and
1180additions to the predefs. With that in mind we need to keep a consistent way
1181of defining the new predefs. Hence all current, and future, predefs follow
1182the same structure and requirements.</p>
1183</div>
1184<div class="sect2">
1185<h3 id="_requirements_of_the_header"><a class="anchor" href="#_requirements_of_the_header"></a>3.1. Requirements of the header</h3>
1186<div class="paragraph">
1187<p>All predefs need to follow a set of requirements:</p>
1188</div>
1189<div class="ulist">
1190<ul>
1191<li>
1192<p>The headers must use the Boost Software License.</p>
1193</li>
1194<li>
1195<p>The predef must, by default, be defined as <code>BOOST_VERSION_NUMBER_NOT_AVAILABLE</code>.</p>
1196</li>
1197<li>
1198<p>The predef must be redefined to a non-zero value once detected.</p>
1199</li>
1200<li>
1201<p>The predef must, by default, be defined to <code>BOOST_VERSION_NUMBER_AVAILABLE</code>
1202when the predef is detected.</p>
1203</li>
1204<li>
1205<p>If possible, the predef will be defined as the version number detected.</p>
1206</li>
1207<li>
1208<p>The predef must define <code>*_AVAILABLE</code> macros as needed.</p>
1209</li>
1210<li>
1211<p>The predef must define a symbolic constant string name macro.</p>
1212</li>
1213<li>
1214<p>The predef must declare itself, after being defined, for the testing
1215system.</p>
1216</li>
1217<li>
1218<p>The predef must guarantee that it is the only one defined as detected
1219per category.</p>
1220</li>
1221<li>
1222<p>But a predef can define <code>*_EMULATED</code> macros to indicate that it was
1223previously detected by another header and is being "emulated" by the
1224system. Note that the <code>*_AVAILABLE</code> macros must still be defined in this
1225situation.</p>
1226</li>
1227</ul>
1228</div>
1229<div class="paragraph">
1230<p>And there are some extra guidelines that predef headers should follow:</p>
1231</div>
1232<div class="ulist">
1233<ul>
1234<li>
1235<p>The detection should avoid including extra headers that might otherwise
1236not be included by default.</p>
1237</li>
1238<li>
1239<p>If the detection must include a header, prefer guarding it within the
1240detection if possible.</p>
1241</li>
1242<li>
1243<p>If the detection must include headers unconditionally, and has a choice
1244of headers to include, prefer the ones with the least impact. I.e.
1245include the one with the minimal set of definitions and other
1246dependencies.</p>
1247</li>
1248</ul>
1249</div>
1250</div>
1251<div class="sect2">
1252<h3 id="_structure_of_the_header"><a class="anchor" href="#_structure_of_the_header"></a>3.2. Structure of the header</h3>
1253<div class="paragraph">
1254<p>For general consistency it&#8217;s suggested that new predef headers follow the
1255structure below, as current predef headers do. First we have the copyright
1256and license statement, followed by the include guard:</p>
1257</div>
1258<div class="listingblock">
1259<div class="content">
1260<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cm">/*</span>
1261<span class="tok-cm">Copyright Jane Doe YYYY</span>
1262<span class="tok-cm">Distributed under the Boost Software License, Version 1.0.</span>
1263<span class="tok-cm">(See accompanying file LICENSE_1_0.txt or copy at</span>
1264<span class="tok-cm">http://www.boost.org/LICENSE_1_0.txt)</span>
1265<span class="tok-cm">*/</span>
1266
1267<span class="tok-cp">#ifndef BOOST_PREDEF_category_tag_H</span>
1268<span class="tok-cp">#define BOOST_PREDEF_category_tag_H</span></code></pre>
1269</div>
1270</div>
1271<div class="paragraph">
1272<p>If the detection depends on the detection of another predef you should
1273include those headers here.</p>
1274</div>
1275<div class="listingblock">
1276<div class="content">
1277<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/CATEGORY_TAG/DEPENDENCY.h&gt;</span><span class="tok-cp"></span></code></pre>
1278</div>
1279</div>
1280<div class="paragraph">
1281<p>Depending on how you are defining the predef you will at minimum have
1282to include the <code>version_number.h</code> header. But you might also want to
1283include the <code>make.h</code> header for the version number decomposing utility
1284macros:</p>
1285</div>
1286<div class="listingblock">
1287<div class="content">
1288<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/version_number.h&gt;</span><span class="tok-cp"></span>
1289<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/make.h&gt;</span><span class="tok-cp"></span></code></pre>
1290</div>
1291</div>
1292<div class="paragraph">
1293<p>The Predef library uses <a href="https://asciidoctor.org/">Asciidoctor</a> for documentation
1294and for the individual predefs to appear in the reference section we add
1295in-code documentation followed by the zero-value default definition of the
1296predef macro. We strongly recommend this particular placement of the
1297documentation and default definition because some development
1298environments automatically interpret this and provide in-line help
1299for the macro. In particular this works for the popular Eclipse IDE:</p>
1300</div>
1301<div class="listingblock">
1302<div class="content">
1303<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cm">/* tag::reference[]</span>
1304
1305<span class="tok-cm">= `BOOST_category_tag`</span>
1306
1307<span class="tok-cm">Documentation about what is detected.</span>
1308
1309<span class="tok-cm">*/</span>
1310
1311<span class="tok-cp">#define BOOST_category_tag BOOST_VERSION_NUMBER_NOT_AVAILABLE</span></code></pre>
1312</div>
1313</div>
1314<div class="paragraph">
1315<p>Next is the detection and definition of the particular predef. The
1316structure for this is to do a single overall check (<code>condition_a</code>) and
1317place further version detection inside this. The first action inside
1318the overall check is to &#8220;#undef BOOST_category_tag&#8221; which removes
1319the zero-value default. The rest is up to the you how to do the checks
1320for defining the version. But at minimum it must
1321&#8220;#define BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE&#8221; as
1322the fallback to minimally indicate that the predef was detected:</p>
1323</div>
1324<div class="listingblock">
1325<div class="content">
1326<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if (condition_a)</span>
1327<span class="tok-cp">#   undef BOOST_category_tag</span>
1328<span class="tok-cp">#   if (condition_b)</span>
1329<span class="tok-cp">#        define BOOST_category_tag BOOST_VERSION_NUMBER(major,minor,patch)</span>
1330<span class="tok-cp">#    else</span>
1331<span class="tok-cp">#        define BOOST_category_tag BOOST_VERSION_NUMBER_AVAILABLE</span>
1332<span class="tok-cp">#    endif</span>
1333<span class="tok-cp">#endif</span></code></pre>
1334</div>
1335</div>
1336<div class="paragraph">
1337<p>We also need to provide the <code>*_AVAILABLE</code> versions of the predef.</p>
1338</div>
1339<div class="listingblock">
1340<div class="content">
1341<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if BOOST_category_tag</span>
1342<span class="tok-cp">#   define BOOST_category_tag_AVAILABLE</span>
1343<span class="tok-cp">#endif</span></code></pre>
1344</div>
1345</div>
1346<div class="paragraph">
1347<p>And for convenience we also want to provide a <code>*_NAME</code> macro:</p>
1348</div>
1349<div class="listingblock">
1350<div class="content">
1351<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#define BOOST_category_tag_NAME &quot;Name&quot;</span></code></pre>
1352</div>
1353</div>
1354<div class="paragraph">
1355<p>We close out the include guard at this point. We do whis before the test
1356declaration as the testing system includes the headers multiple times
1357to generate the needed testing code.</p>
1358</div>
1359<div class="listingblock">
1360<div class="content">
1361<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#endif</span></code></pre>
1362</div>
1363</div>
1364<div class="paragraph">
1365<p>The testing of the predef macros is automated to generate checks for all
1366the defined predefs, whether detected or not. To do this we need to
1367declare the predef to the test system. This declaration is empty for
1368regular use. And during the test programs they expand out specially
1369to create informational output:</p>
1370</div>
1371<div class="listingblock">
1372<div class="content">
1373<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/detail/test.h&gt;</span><span class="tok-cp"></span>
1374<span class="tok-n">BOOST_PREDEF_DECLARE_TEST</span><span class="tok-p">(</span><span class="tok-n">BOOST_category_tag</span><span class="tok-p">,</span><span class="tok-n">BOOST_category_tag_NAME</span><span class="tok-p">)</span></code></pre>
1375</div>
1376</div>
1377</div>
1378<div class="sect2">
1379<h3 id="_adding_exclusive_predefs"><a class="anchor" href="#_adding_exclusive_predefs"></a>3.3. Adding exclusive predefs</h3>
1380<div class="paragraph">
1381<p>For headers of predefs that need to be mutually exclusive in the detection
1382we need to add checks and definitions to detect when the predef is
1383detected by multiple headers.</p>
1384</div>
1385<div class="paragraph">
1386<p>Internally compiler, operating system, and platforms define
1387<code>BOOST_PREDEF_DETAIL_COMP_DETECTED</code>, <code>BOOST_PREDEF_DEFAIL_OS_DETECTED</code>, and
1388<code>BOOST_PREDEF_DETAIL_PLAT_DETECTED</code> respectively when the predef is first
1389detected. This is used to guard against multiple definition of the detection
1390in later included headers. In those cases the detection would instead be
1391written as:</p>
1392</div>
1393<div class="listingblock">
1394<div class="content">
1395<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if !BOOST_PREDEF_DETAIL_category_DETECTED &amp;&amp; (condition_a)</span>
1396<span class="tok-cp">#   undef BOOST_category_tag</span>
1397<span class="tok-cp">#   if (condition_b)</span>
1398<span class="tok-cp">#        define BOOST_category_tag BOOST_VERSION_NUMBER(major,minor,patch)</span>
1399<span class="tok-cp">#    else</span>
1400<span class="tok-cp">#        define BOOST_category_tag BOOST_VERSION_NUMBER(0,0,1)</span>
1401<span class="tok-cp">#    endif</span>
1402<span class="tok-cp">#endif</span></code></pre>
1403</div>
1404</div>
1405<div class="paragraph">
1406<p>And we also include a header that defines the <code>*_DETECTED</code> macro when we have
1407the detection:</p>
1408</div>
1409<div class="listingblock">
1410<div class="content">
1411<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if BOOST_category_tag</span>
1412<span class="tok-cp">#   define BOOST_category_tag_AVAILABLE</span>
1413<span class="tok-cp">#   include &lt;boost/predef/detail/CATEGORY_detected.h&gt;</span>
1414<span class="tok-cp">#endif</span></code></pre>
1415</div>
1416</div>
1417<div class="paragraph">
1418<p>Everything else about the header is the same as the basic detection header.</p>
1419</div>
1420</div>
1421<div class="sect2">
1422<h3 id="_adding_an_exclusive_but_emulated_predef"><a class="anchor" href="#_adding_an_exclusive_but_emulated_predef"></a>3.4. Adding an exclusive but emulated predef</h3>
1423<div class="paragraph">
1424<p>Because compilers are frequently emulated by other compilers we both want
1425to have exclusive detection of the compiler and also provide information
1426that we detected the emulation of the compiler. To accomplish this we define
1427a local <code>*_DETECTION</code> macro for the compiler detection. And conditionally
1428define either the base compiler predef <code>BOOST_COMP_compiler</code> or the alternate
1429<code>BOOST_COMP_compiler_EMULATED</code> predef.</p>
1430</div>
1431<div class="paragraph">
1432<p>The initial detection would look like:</p>
1433</div>
1434<div class="listingblock">
1435<div class="content">
1436<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if (condition_a)</span>
1437<span class="tok-cp">#   if (condition_b)</span>
1438<span class="tok-cp">#        define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER(major,minor,patch)</span>
1439<span class="tok-cp">#    else</span>
1440<span class="tok-cp">#        define BOOST_COMP_tag_DETECTION BOOST_VERSION_NUMBER_AVAILABLE</span>
1441<span class="tok-cp">#    endif</span>
1442<span class="tok-cp">#endif</span></code></pre>
1443</div>
1444</div>
1445<div class="paragraph">
1446<p>And then we can conditionally define the base or emulated predefs:</p>
1447</div>
1448<div class="listingblock">
1449<div class="content">
1450<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#ifdef BOOST_COMP_tag_DETECTION</span>
1451<span class="tok-cp">#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)</span>
1452<span class="tok-cp">#       define BOOST_COMP_tag_EMULATED BOOST_COMP_tag_DETECTION</span>
1453<span class="tok-cp">#   else</span>
1454<span class="tok-cp">#       undef BOOST_COMP_tag</span>
1455<span class="tok-cp">#       define BOOST_COMP_tag BOOST_COMP_tag_DETECTION</span>
1456<span class="tok-cp">#   endif</span>
1457<span class="tok-cp">#   define BOOST_category_tag_AVAILABLE</span>
1458<span class="tok-cp">#   include &lt;boost/predef/detail/comp_detected.h&gt;</span>
1459<span class="tok-cp">#endif</span></code></pre>
1460</div>
1461</div>
1462</div>
1463<div class="sect2">
1464<h3 id="_using_utility_pattern_macros"><a class="anchor" href="#_using_utility_pattern_macros"></a>3.5. Using utility pattern macros</h3>
1465<div class="paragraph">
1466<p>By including:</p>
1467</div>
1468<div class="listingblock">
1469<div class="content">
1470<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/make.h&gt;</span><span class="tok-cp"></span></code></pre>
1471</div>
1472</div>
1473<div class="paragraph">
1474<p>One will get a set of utility macros to decompose common version
1475macros as defined by compilers. For example the EDG compiler
1476uses a simple 3-digit version macro (M,N,P). It can be decomposed
1477and defined as:</p>
1478</div>
1479<div class="listingblock">
1480<div class="content">
1481<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#define BOOST_COMP_EDG BOOST_PREDEF_MAKE_N_N_N(__EDG_VERSION__)</span></code></pre>
1482</div>
1483</div>
1484<div class="paragraph">
1485<p>The decomposition macros are split into three types: decimal
1486decomposition, hexadecimal decomposition, and date decomposition.
1487They follow the format of using "N" for decimal, "F" for hexadecimal,
1488and "Y", "M", "D" for dates.</p>
1489</div>
1490</div>
1491</div>
1492</div>
1493<div class="sect1">
1494<h2 id="_reference"><a class="anchor" href="#_reference"></a>4. Reference</h2>
1495<div class="sectionbody">
1496<div class="sect2">
1497<h3 id="_boost_arch_architecture_macros"><a class="anchor" href="#_boost_arch_architecture_macros"></a>4.1. <code>BOOST_ARCH</code> architecture macros</h3>
1498<div class="sect3">
1499<h4 id="_boost_arch_alpha"><a class="anchor" href="#_boost_arch_alpha"></a>4.1.1. <code>BOOST_ARCH_ALPHA</code></h4>
1500<div class="paragraph">
1501<p><a href="http://en.wikipedia.org/wiki/DEC_Alpha">DEC Alpha</a> architecture.</p>
1502</div>
1503<table class="tableblock frame-all grid-all stretch">
1504<colgroup>
1505<col style="width: 50%;">
1506<col style="width: 50%;">
1507</colgroup>
1508<thead>
1509<tr>
1510<th class="tableblock halign-left valign-top">Symbol</th>
1511<th class="tableblock halign-left valign-top">Version</th>
1512</tr>
1513</thead>
1514<tbody>
1515<tr>
1516<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__alpha__</code></p></td>
1517<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1518</tr>
1519<tr>
1520<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__alpha</code></p></td>
1521<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1522</tr>
1523<tr>
1524<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ALPHA</code></p></td>
1525<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1526</tr>
1527<tr>
1528<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__alpha_ev4__</code></p></td>
1529<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1530</tr>
1531<tr>
1532<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__alpha_ev5__</code></p></td>
1533<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
1534</tr>
1535<tr>
1536<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__alpha_ev6__</code></p></td>
1537<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1538</tr>
1539</tbody>
1540</table>
1541</div>
1542<div class="sect3">
1543<h4 id="_boost_arch_arm"><a class="anchor" href="#_boost_arch_arm"></a>4.1.2. <code>BOOST_ARCH_ARM</code></h4>
1544<div class="paragraph">
1545<p><a href="http://en.wikipedia.org/wiki/ARM_architecture">ARM</a> architecture.</p>
1546</div>
1547<table class="tableblock frame-all grid-all stretch">
1548<colgroup>
1549<col style="width: 50%;">
1550<col style="width: 50%;">
1551</colgroup>
1552<thead>
1553<tr>
1554<th class="tableblock halign-left valign-top">Symbol</th>
1555<th class="tableblock halign-left valign-top">Version</th>
1556</tr>
1557</thead>
1558<tbody>
1559<tr>
1560<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH</code></p></td>
1561<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1562</tr>
1563<tr>
1564<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TARGET_ARCH_ARM</code></p></td>
1565<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1566</tr>
1567<tr>
1568<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TARGET_ARCH_THUMB</code></p></td>
1569<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1570</tr>
1571<tr>
1572<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM</code></p></td>
1573<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1574</tr>
1575<tr>
1576<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__arm__</code></p></td>
1577<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1578</tr>
1579<tr>
1580<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__arm64</code></p></td>
1581<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1582</tr>
1583<tr>
1584<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__thumb__</code></p></td>
1585<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1586</tr>
1587<tr>
1588<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM64</code></p></td>
1589<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1590</tr>
1591<tr>
1592<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__aarch64__</code></p></td>
1593<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1594</tr>
1595<tr>
1596<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AARCH64EL__</code></p></td>
1597<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1598</tr>
1599<tr>
1600<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7__</code></p></td>
1601<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1602</tr>
1603<tr>
1604<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7A__</code></p></td>
1605<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1606</tr>
1607<tr>
1608<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7R__</code></p></td>
1609<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1610</tr>
1611<tr>
1612<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7M__</code></p></td>
1613<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1614</tr>
1615<tr>
1616<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6K__</code></p></td>
1617<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1618</tr>
1619<tr>
1620<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6Z__</code></p></td>
1621<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1622</tr>
1623<tr>
1624<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6KZ__</code></p></td>
1625<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1626</tr>
1627<tr>
1628<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6T2__</code></p></td>
1629<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1630</tr>
1631<tr>
1632<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_5TE__</code></p></td>
1633<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1634</tr>
1635<tr>
1636<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_5TEJ__</code></p></td>
1637<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1638</tr>
1639<tr>
1640<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_4T__</code></p></td>
1641<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1642</tr>
1643<tr>
1644<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_4__</code></p></td>
1645<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1646</tr>
1647<tr>
1648<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH</code></p></td>
1649<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
1650</tr>
1651<tr>
1652<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TARGET_ARCH_ARM</code></p></td>
1653<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
1654</tr>
1655<tr>
1656<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TARGET_ARCH_THUMB</code></p></td>
1657<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
1658</tr>
1659<tr>
1660<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM</code></p></td>
1661<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
1662</tr>
1663<tr>
1664<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__arm64</code></p></td>
1665<td class="tableblock halign-left valign-top"><p class="tableblock">8.0.0</p></td>
1666</tr>
1667<tr>
1668<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM64</code></p></td>
1669<td class="tableblock halign-left valign-top"><p class="tableblock">8.0.0</p></td>
1670</tr>
1671<tr>
1672<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__aarch64__</code></p></td>
1673<td class="tableblock halign-left valign-top"><p class="tableblock">8.0.0</p></td>
1674</tr>
1675<tr>
1676<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AARCH64EL__</code></p></td>
1677<td class="tableblock halign-left valign-top"><p class="tableblock">8.0.0</p></td>
1678</tr>
1679<tr>
1680<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7__</code></p></td>
1681<td class="tableblock halign-left valign-top"><p class="tableblock">7.0.0</p></td>
1682</tr>
1683<tr>
1684<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7A__</code></p></td>
1685<td class="tableblock halign-left valign-top"><p class="tableblock">7.0.0</p></td>
1686</tr>
1687<tr>
1688<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7R__</code></p></td>
1689<td class="tableblock halign-left valign-top"><p class="tableblock">7.0.0</p></td>
1690</tr>
1691<tr>
1692<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_7M__</code></p></td>
1693<td class="tableblock halign-left valign-top"><p class="tableblock">7.0.0</p></td>
1694</tr>
1695<tr>
1696<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6K__</code></p></td>
1697<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1698</tr>
1699<tr>
1700<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6Z__</code></p></td>
1701<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1702</tr>
1703<tr>
1704<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6KZ__</code></p></td>
1705<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1706</tr>
1707<tr>
1708<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_6T2__</code></p></td>
1709<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1710</tr>
1711<tr>
1712<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_5TE__</code></p></td>
1713<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
1714</tr>
1715<tr>
1716<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_5TEJ__</code></p></td>
1717<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
1718</tr>
1719<tr>
1720<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_4T__</code></p></td>
1721<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1722</tr>
1723<tr>
1724<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_ARCH_4__</code></p></td>
1725<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1726</tr>
1727</tbody>
1728</table>
1729</div>
1730<div class="sect3">
1731<h4 id="_boost_arch_blackfin"><a class="anchor" href="#_boost_arch_blackfin"></a>4.1.3. <code>BOOST_ARCH_BLACKFIN</code></h4>
1732<div class="paragraph">
1733<p>Blackfin Processors from Analog Devices.</p>
1734</div>
1735<table class="tableblock frame-all grid-all stretch">
1736<colgroup>
1737<col style="width: 50%;">
1738<col style="width: 50%;">
1739</colgroup>
1740<thead>
1741<tr>
1742<th class="tableblock halign-left valign-top">Symbol</th>
1743<th class="tableblock halign-left valign-top">Version</th>
1744</tr>
1745</thead>
1746<tbody>
1747<tr>
1748<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__bfin__</code></p></td>
1749<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1750</tr>
1751<tr>
1752<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__BFIN__</code></p></td>
1753<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1754</tr>
1755<tr>
1756<td class="tableblock halign-left valign-top"><p class="tableblock"><code>bfin</code></p></td>
1757<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1758</tr>
1759<tr>
1760<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BFIN</code></p></td>
1761<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1762</tr>
1763</tbody>
1764</table>
1765</div>
1766<div class="sect3">
1767<h4 id="_boost_arch_convex"><a class="anchor" href="#_boost_arch_convex"></a>4.1.4. <code>BOOST_ARCH_CONVEX</code></h4>
1768<div class="paragraph">
1769<p><a href="http://en.wikipedia.org/wiki/Convex_Computer">Convex Computer</a> architecture.</p>
1770</div>
1771<table class="tableblock frame-all grid-all stretch">
1772<colgroup>
1773<col style="width: 50%;">
1774<col style="width: 50%;">
1775</colgroup>
1776<thead>
1777<tr>
1778<th class="tableblock halign-left valign-top">Symbol</th>
1779<th class="tableblock halign-left valign-top">Version</th>
1780</tr>
1781</thead>
1782<tbody>
1783<tr>
1784<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex__</code></p></td>
1785<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1786</tr>
1787<tr>
1788<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex_c1__</code></p></td>
1789<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1790</tr>
1791<tr>
1792<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex_c2__</code></p></td>
1793<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
1794</tr>
1795<tr>
1796<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex_c32__</code></p></td>
1797<td class="tableblock halign-left valign-top"><p class="tableblock">3.2.0</p></td>
1798</tr>
1799<tr>
1800<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex_c34__</code></p></td>
1801<td class="tableblock halign-left valign-top"><p class="tableblock">3.4.0</p></td>
1802</tr>
1803<tr>
1804<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__convex_c38__</code></p></td>
1805<td class="tableblock halign-left valign-top"><p class="tableblock">3.8.0</p></td>
1806</tr>
1807</tbody>
1808</table>
1809</div>
1810<div class="sect3">
1811<h4 id="_boost_arch_ia64"><a class="anchor" href="#_boost_arch_ia64"></a>4.1.5. <code>BOOST_ARCH_IA64</code></h4>
1812<div class="paragraph">
1813<p><a href="http://en.wikipedia.org/wiki/Ia64">Intel Itanium 64</a> architecture.</p>
1814</div>
1815<table class="tableblock frame-all grid-all stretch">
1816<colgroup>
1817<col style="width: 50%;">
1818<col style="width: 50%;">
1819</colgroup>
1820<thead>
1821<tr>
1822<th class="tableblock halign-left valign-top">Symbol</th>
1823<th class="tableblock halign-left valign-top">Version</th>
1824</tr>
1825</thead>
1826<tbody>
1827<tr>
1828<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ia64__</code></p></td>
1829<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1830</tr>
1831<tr>
1832<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_IA64</code></p></td>
1833<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1834</tr>
1835<tr>
1836<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__IA64__</code></p></td>
1837<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1838</tr>
1839<tr>
1840<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ia64</code></p></td>
1841<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1842</tr>
1843<tr>
1844<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IA64</code></p></td>
1845<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1846</tr>
1847<tr>
1848<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__itanium__</code></p></td>
1849<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1850</tr>
1851</tbody>
1852</table>
1853</div>
1854<div class="sect3">
1855<h4 id="_boost_arch_m68k"><a class="anchor" href="#_boost_arch_m68k"></a>4.1.6. <code>BOOST_ARCH_M68K</code></h4>
1856<div class="paragraph">
1857<p><a href="http://en.wikipedia.org/wiki/M68k">Motorola 68k</a> architecture.</p>
1858</div>
1859<table class="tableblock frame-all grid-all stretch">
1860<colgroup>
1861<col style="width: 50%;">
1862<col style="width: 50%;">
1863</colgroup>
1864<thead>
1865<tr>
1866<th class="tableblock halign-left valign-top">Symbol</th>
1867<th class="tableblock halign-left valign-top">Version</th>
1868</tr>
1869</thead>
1870<tbody>
1871<tr>
1872<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__m68k__</code></p></td>
1873<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1874</tr>
1875<tr>
1876<td class="tableblock halign-left valign-top"><p class="tableblock"><code>M68000</code></p></td>
1877<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1878</tr>
1879<tr>
1880<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68060__</code></p></td>
1881<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1882</tr>
1883<tr>
1884<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68060</code></p></td>
1885<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1886</tr>
1887<tr>
1888<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68060</code></p></td>
1889<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
1890</tr>
1891<tr>
1892<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68040__</code></p></td>
1893<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1894</tr>
1895<tr>
1896<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68040</code></p></td>
1897<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1898</tr>
1899<tr>
1900<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68040</code></p></td>
1901<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
1902</tr>
1903<tr>
1904<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68030__</code></p></td>
1905<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
1906</tr>
1907<tr>
1908<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68030</code></p></td>
1909<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
1910</tr>
1911<tr>
1912<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68030</code></p></td>
1913<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
1914</tr>
1915<tr>
1916<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68020__</code></p></td>
1917<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
1918</tr>
1919<tr>
1920<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68020</code></p></td>
1921<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
1922</tr>
1923<tr>
1924<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68020</code></p></td>
1925<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
1926</tr>
1927<tr>
1928<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68010__</code></p></td>
1929<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1930</tr>
1931<tr>
1932<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68010</code></p></td>
1933<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1934</tr>
1935<tr>
1936<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68010</code></p></td>
1937<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1938</tr>
1939<tr>
1940<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68000__</code></p></td>
1941<td class="tableblock halign-left valign-top"><p class="tableblock">0.0.1</p></td>
1942</tr>
1943<tr>
1944<td class="tableblock halign-left valign-top"><p class="tableblock"><code>mc68000</code></p></td>
1945<td class="tableblock halign-left valign-top"><p class="tableblock">0.0.1</p></td>
1946</tr>
1947<tr>
1948<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mc68000</code></p></td>
1949<td class="tableblock halign-left valign-top"><p class="tableblock">0.0.1</p></td>
1950</tr>
1951</tbody>
1952</table>
1953</div>
1954<div class="sect3">
1955<h4 id="_boost_arch_mips"><a class="anchor" href="#_boost_arch_mips"></a>4.1.7. <code>BOOST_ARCH_MIPS</code></h4>
1956<div class="paragraph">
1957<p><a href="http://en.wikipedia.org/wiki/MIPS_architecture">MIPS</a> architecture.</p>
1958</div>
1959<table class="tableblock frame-all grid-all stretch">
1960<colgroup>
1961<col style="width: 50%;">
1962<col style="width: 50%;">
1963</colgroup>
1964<thead>
1965<tr>
1966<th class="tableblock halign-left valign-top">Symbol</th>
1967<th class="tableblock halign-left valign-top">Version</th>
1968</tr>
1969</thead>
1970<tbody>
1971<tr>
1972<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mips__</code></p></td>
1973<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1974</tr>
1975<tr>
1976<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mips</code></p></td>
1977<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1978</tr>
1979<tr>
1980<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MIPS__</code></p></td>
1981<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
1982</tr>
1983<tr>
1984<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__mips</code></p></td>
1985<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
1986</tr>
1987<tr>
1988<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MIPS_ISA_MIPS1</code></p></td>
1989<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1990</tr>
1991<tr>
1992<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_R3000</code></p></td>
1993<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
1994</tr>
1995<tr>
1996<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MIPS_ISA_MIPS2</code></p></td>
1997<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
1998</tr>
1999<tr>
2000<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MIPS_ISA2__</code></p></td>
2001<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2002</tr>
2003<tr>
2004<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_R4000</code></p></td>
2005<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2006</tr>
2007<tr>
2008<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MIPS_ISA_MIPS3</code></p></td>
2009<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
2010</tr>
2011<tr>
2012<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MIPS_ISA3__</code></p></td>
2013<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
2014</tr>
2015<tr>
2016<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MIPS_ISA_MIPS4</code></p></td>
2017<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
2018</tr>
2019<tr>
2020<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MIPS_ISA4__</code></p></td>
2021<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
2022</tr>
2023</tbody>
2024</table>
2025</div>
2026<div class="sect3">
2027<h4 id="_boost_arch_parisc"><a class="anchor" href="#_boost_arch_parisc"></a>4.1.8. <code>BOOST_ARCH_PARISC</code></h4>
2028<div class="paragraph">
2029<p><a href="http://en.wikipedia.org/wiki/PA-RISC_family">HP/PA RISC</a> architecture.</p>
2030</div>
2031<table class="tableblock frame-all grid-all stretch">
2032<colgroup>
2033<col style="width: 50%;">
2034<col style="width: 50%;">
2035</colgroup>
2036<thead>
2037<tr>
2038<th class="tableblock halign-left valign-top">Symbol</th>
2039<th class="tableblock halign-left valign-top">Version</th>
2040</tr>
2041</thead>
2042<tbody>
2043<tr>
2044<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__hppa__</code></p></td>
2045<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2046</tr>
2047<tr>
2048<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__hppa</code></p></td>
2049<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2050</tr>
2051<tr>
2052<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HPPA__</code></p></td>
2053<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2054</tr>
2055<tr>
2056<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_PA_RISC1_0</code></p></td>
2057<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
2058</tr>
2059<tr>
2060<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_PA_RISC1_1</code></p></td>
2061<td class="tableblock halign-left valign-top"><p class="tableblock">1.1.0</p></td>
2062</tr>
2063<tr>
2064<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HPPA11__</code></p></td>
2065<td class="tableblock halign-left valign-top"><p class="tableblock">1.1.0</p></td>
2066</tr>
2067<tr>
2068<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PA7100__</code></p></td>
2069<td class="tableblock halign-left valign-top"><p class="tableblock">1.1.0</p></td>
2070</tr>
2071<tr>
2072<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_PA_RISC2_0</code></p></td>
2073<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2074</tr>
2075<tr>
2076<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__RISC2_0__</code></p></td>
2077<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2078</tr>
2079<tr>
2080<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HPPA20__</code></p></td>
2081<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2082</tr>
2083<tr>
2084<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PA8000__</code></p></td>
2085<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2086</tr>
2087</tbody>
2088</table>
2089</div>
2090<div class="sect3">
2091<h4 id="_boost_arch_ppc"><a class="anchor" href="#_boost_arch_ppc"></a>4.1.9. <code>BOOST_ARCH_PPC</code></h4>
2092<div class="paragraph">
2093<p><a href="http://en.wikipedia.org/wiki/PowerPC">PowerPC</a> architecture.</p>
2094</div>
2095<table class="tableblock frame-all grid-all stretch">
2096<colgroup>
2097<col style="width: 50%;">
2098<col style="width: 50%;">
2099</colgroup>
2100<thead>
2101<tr>
2102<th class="tableblock halign-left valign-top">Symbol</th>
2103<th class="tableblock halign-left valign-top">Version</th>
2104</tr>
2105</thead>
2106<tbody>
2107<tr>
2108<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__powerpc</code></p></td>
2109<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2110</tr>
2111<tr>
2112<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__powerpc__</code></p></td>
2113<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2114</tr>
2115<tr>
2116<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__POWERPC__</code></p></td>
2117<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2118</tr>
2119<tr>
2120<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ppc__</code></p></td>
2121<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2122</tr>
2123<tr>
2124<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_PPC</code></p></td>
2125<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2126</tr>
2127<tr>
2128<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_ARCH_PPC</code></p></td>
2129<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2130</tr>
2131<tr>
2132<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PPCGECKO__</code></p></td>
2133<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2134</tr>
2135<tr>
2136<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PPCBROADWAY__</code></p></td>
2137<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2138</tr>
2139<tr>
2140<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_XENON</code></p></td>
2141<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2142</tr>
2143<tr>
2144<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ppc601__</code></p></td>
2145<td class="tableblock halign-left valign-top"><p class="tableblock">6.1.0</p></td>
2146</tr>
2147<tr>
2148<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_ARCH_601</code></p></td>
2149<td class="tableblock halign-left valign-top"><p class="tableblock">6.1.0</p></td>
2150</tr>
2151<tr>
2152<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ppc603__</code></p></td>
2153<td class="tableblock halign-left valign-top"><p class="tableblock">6.3.0</p></td>
2154</tr>
2155<tr>
2156<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_ARCH_603</code></p></td>
2157<td class="tableblock halign-left valign-top"><p class="tableblock">6.3.0</p></td>
2158</tr>
2159<tr>
2160<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ppc604__</code></p></td>
2161<td class="tableblock halign-left valign-top"><p class="tableblock">6.4.0</p></td>
2162</tr>
2163<tr>
2164<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ppc604__</code></p></td>
2165<td class="tableblock halign-left valign-top"><p class="tableblock">6.4.0</p></td>
2166</tr>
2167</tbody>
2168</table>
2169</div>
2170<div class="sect3">
2171<h4 id="_boost_arch_ptx"><a class="anchor" href="#_boost_arch_ptx"></a>4.1.10. <code>BOOST_ARCH_PTX</code></h4>
2172<div class="paragraph">
2173<p><a href="https://en.wikipedia.org/wiki/Parallel_Thread_Execution">PTX</a> architecture.</p>
2174</div>
2175<table class="tableblock frame-all grid-all stretch">
2176<colgroup>
2177<col style="width: 50%;">
2178<col style="width: 50%;">
2179</colgroup>
2180<thead>
2181<tr>
2182<th class="tableblock halign-left valign-top">Symbol</th>
2183<th class="tableblock halign-left valign-top">Version</th>
2184</tr>
2185</thead>
2186<tbody>
2187<tr>
2188<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CUDA_ARCH__</code></p></td>
2189<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2190</tr>
2191<tr>
2192<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CUDA_ARCH__</code></p></td>
2193<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
2194</tr>
2195</tbody>
2196</table>
2197</div>
2198<div class="sect3">
2199<h4 id="_boost_arch_pyramid"><a class="anchor" href="#_boost_arch_pyramid"></a>4.1.11. <code>BOOST_ARCH_PYRAMID</code></h4>
2200<div class="paragraph">
2201<p>Pyramid 9810 architecture.</p>
2202</div>
2203<table class="tableblock frame-all grid-all stretch">
2204<colgroup>
2205<col style="width: 50%;">
2206<col style="width: 50%;">
2207</colgroup>
2208<thead>
2209<tr>
2210<th class="tableblock halign-left valign-top">Symbol</th>
2211<th class="tableblock halign-left valign-top">Version</th>
2212</tr>
2213</thead>
2214<tbody>
2215<tr>
2216<td class="tableblock halign-left valign-top"><p class="tableblock"><code>pyr</code></p></td>
2217<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2218</tr>
2219</tbody>
2220</table>
2221</div>
2222<div class="sect3">
2223<h4 id="_boost_arch_riscv"><a class="anchor" href="#_boost_arch_riscv"></a>4.1.12. <code>BOOST_ARCH_RISCV</code></h4>
2224<div class="paragraph">
2225<p><a href="http://en.wikipedia.org/wiki/RISC-V">RISC-V</a> architecture.</p>
2226</div>
2227<table class="tableblock frame-all grid-all stretch">
2228<colgroup>
2229<col style="width: 50%;">
2230<col style="width: 50%;">
2231</colgroup>
2232<thead>
2233<tr>
2234<th class="tableblock halign-left valign-top">Symbol</th>
2235<th class="tableblock halign-left valign-top">Version</th>
2236</tr>
2237</thead>
2238<tbody>
2239<tr>
2240<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__riscv</code></p></td>
2241<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2242</tr>
2243</tbody>
2244</table>
2245</div>
2246<div class="sect3">
2247<h4 id="_boost_arch_rs6000"><a class="anchor" href="#_boost_arch_rs6000"></a>4.1.13. <code>BOOST_ARCH_RS6000</code></h4>
2248<div class="paragraph">
2249<p><a href="http://en.wikipedia.org/wiki/RS/6000">RS/6000</a> architecture.</p>
2250</div>
2251<table class="tableblock frame-all grid-all stretch">
2252<colgroup>
2253<col style="width: 50%;">
2254<col style="width: 50%;">
2255</colgroup>
2256<thead>
2257<tr>
2258<th class="tableblock halign-left valign-top">Symbol</th>
2259<th class="tableblock halign-left valign-top">Version</th>
2260</tr>
2261</thead>
2262<tbody>
2263<tr>
2264<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__THW_RS6000</code></p></td>
2265<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2266</tr>
2267<tr>
2268<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_IBMR2</code></p></td>
2269<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2270</tr>
2271<tr>
2272<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_POWER</code></p></td>
2273<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2274</tr>
2275<tr>
2276<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_ARCH_PWR</code></p></td>
2277<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2278</tr>
2279<tr>
2280<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_ARCH_PWR2</code></p></td>
2281<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2282</tr>
2283</tbody>
2284</table>
2285</div>
2286<div class="sect3">
2287<h4 id="_boost_arch_sparc"><a class="anchor" href="#_boost_arch_sparc"></a>4.1.14. <code>BOOST_ARCH_SPARC</code></h4>
2288<div class="paragraph">
2289<p><a href="http://en.wikipedia.org/wiki/SPARC">SPARC</a> architecture.</p>
2290</div>
2291<table class="tableblock frame-all grid-all stretch">
2292<colgroup>
2293<col style="width: 50%;">
2294<col style="width: 50%;">
2295</colgroup>
2296<thead>
2297<tr>
2298<th class="tableblock halign-left valign-top">Symbol</th>
2299<th class="tableblock halign-left valign-top">Version</th>
2300</tr>
2301</thead>
2302<tbody>
2303<tr>
2304<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sparc__</code></p></td>
2305<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2306</tr>
2307<tr>
2308<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sparc</code></p></td>
2309<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2310</tr>
2311<tr>
2312<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sparcv9</code></p></td>
2313<td class="tableblock halign-left valign-top"><p class="tableblock">9.0.0</p></td>
2314</tr>
2315<tr>
2316<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sparcv8</code></p></td>
2317<td class="tableblock halign-left valign-top"><p class="tableblock">8.0.0</p></td>
2318</tr>
2319</tbody>
2320</table>
2321</div>
2322<div class="sect3">
2323<h4 id="_boost_arch_sh"><a class="anchor" href="#_boost_arch_sh"></a>4.1.15. <code>BOOST_ARCH_SH</code></h4>
2324<div class="paragraph">
2325<p><a href="http://en.wikipedia.org/wiki/SuperH">SuperH</a> architecture:
2326If available versions [1-5] are specifically detected.</p>
2327</div>
2328<table class="tableblock frame-all grid-all stretch">
2329<colgroup>
2330<col style="width: 50%;">
2331<col style="width: 50%;">
2332</colgroup>
2333<thead>
2334<tr>
2335<th class="tableblock halign-left valign-top">Symbol</th>
2336<th class="tableblock halign-left valign-top">Version</th>
2337</tr>
2338</thead>
2339<tbody>
2340<tr>
2341<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sh__</code></p></td>
2342<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2343</tr>
2344<tr>
2345<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SH5__</code></p></td>
2346<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
2347</tr>
2348<tr>
2349<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SH4__</code></p></td>
2350<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
2351</tr>
2352<tr>
2353<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sh3__</code></p></td>
2354<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
2355</tr>
2356<tr>
2357<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SH3__</code></p></td>
2358<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
2359</tr>
2360<tr>
2361<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sh2__</code></p></td>
2362<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
2363</tr>
2364<tr>
2365<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sh1__</code></p></td>
2366<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
2367</tr>
2368</tbody>
2369</table>
2370</div>
2371<div class="sect3">
2372<h4 id="_boost_arch_sys370"><a class="anchor" href="#_boost_arch_sys370"></a>4.1.16. <code>BOOST_ARCH_SYS370</code></h4>
2373<div class="paragraph">
2374<p><a href="http://en.wikipedia.org/wiki/System/370">System/370</a> architecture.</p>
2375</div>
2376<table class="tableblock frame-all grid-all stretch">
2377<colgroup>
2378<col style="width: 50%;">
2379<col style="width: 50%;">
2380</colgroup>
2381<thead>
2382<tr>
2383<th class="tableblock halign-left valign-top">Symbol</th>
2384<th class="tableblock halign-left valign-top">Version</th>
2385</tr>
2386</thead>
2387<tbody>
2388<tr>
2389<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__370__</code></p></td>
2390<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2391</tr>
2392<tr>
2393<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__THW_370__</code></p></td>
2394<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2395</tr>
2396</tbody>
2397</table>
2398</div>
2399<div class="sect3">
2400<h4 id="_boost_arch_sys390"><a class="anchor" href="#_boost_arch_sys390"></a>4.1.17. <code>BOOST_ARCH_SYS390</code></h4>
2401<div class="paragraph">
2402<p><a href="http://en.wikipedia.org/wiki/System/390">System/390</a> architecture.</p>
2403</div>
2404<table class="tableblock frame-all grid-all stretch">
2405<colgroup>
2406<col style="width: 50%;">
2407<col style="width: 50%;">
2408</colgroup>
2409<thead>
2410<tr>
2411<th class="tableblock halign-left valign-top">Symbol</th>
2412<th class="tableblock halign-left valign-top">Version</th>
2413</tr>
2414</thead>
2415<tbody>
2416<tr>
2417<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__s390__</code></p></td>
2418<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2419</tr>
2420<tr>
2421<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__s390x__</code></p></td>
2422<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2423</tr>
2424</tbody>
2425</table>
2426</div>
2427<div class="sect3">
2428<h4 id="_boost_arch_x86"><a class="anchor" href="#_boost_arch_x86"></a>4.1.18. <code>BOOST_ARCH_X86</code></h4>
2429<div class="paragraph">
2430<p><a href="http://en.wikipedia.org/wiki/X86">Intel x86</a> architecture. This is
2431a category to indicate that either <code>BOOST_ARCH_X86_32</code> or
2432<code>BOOST_ARCH_X86_64</code> is detected.</p>
2433</div>
2434</div>
2435<div class="sect3">
2436<h4 id="_boost_arch_z"><a class="anchor" href="#_boost_arch_z"></a>4.1.19. <code>BOOST_ARCH_Z</code></h4>
2437<div class="paragraph">
2438<p><a href="http://en.wikipedia.org/wiki/Z/Architecture">z/Architecture</a> architecture.</p>
2439</div>
2440<table class="tableblock frame-all grid-all stretch">
2441<colgroup>
2442<col style="width: 50%;">
2443<col style="width: 50%;">
2444</colgroup>
2445<thead>
2446<tr>
2447<th class="tableblock halign-left valign-top">Symbol</th>
2448<th class="tableblock halign-left valign-top">Version</th>
2449</tr>
2450</thead>
2451<tbody>
2452<tr>
2453<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SYSC_ZARCH__</code></p></td>
2454<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2455</tr>
2456</tbody>
2457</table>
2458</div>
2459<div class="sect3">
2460<h4 id="_boost_arch_x86_32"><a class="anchor" href="#_boost_arch_x86_32"></a>4.1.20. <code>BOOST_ARCH_X86_32</code></h4>
2461<div class="paragraph">
2462<p><a href="http://en.wikipedia.org/wiki/X86">Intel x86</a> architecture:
2463If available versions [3-6] are specifically detected.</p>
2464</div>
2465<table class="tableblock frame-all grid-all stretch">
2466<colgroup>
2467<col style="width: 50%;">
2468<col style="width: 50%;">
2469</colgroup>
2470<thead>
2471<tr>
2472<th class="tableblock halign-left valign-top">Symbol</th>
2473<th class="tableblock halign-left valign-top">Version</th>
2474</tr>
2475</thead>
2476<tbody>
2477<tr>
2478<td class="tableblock halign-left valign-top"><p class="tableblock"><code>i386</code></p></td>
2479<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2480</tr>
2481<tr>
2482<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i386__</code></p></td>
2483<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2484</tr>
2485<tr>
2486<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i486__</code></p></td>
2487<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2488</tr>
2489<tr>
2490<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i586__</code></p></td>
2491<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2492</tr>
2493<tr>
2494<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i686__</code></p></td>
2495<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2496</tr>
2497<tr>
2498<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i386</code></p></td>
2499<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2500</tr>
2501<tr>
2502<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86</code></p></td>
2503<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2504</tr>
2505<tr>
2506<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_X86_</code></p></td>
2507<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2508</tr>
2509<tr>
2510<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__THW_INTEL__</code></p></td>
2511<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2512</tr>
2513<tr>
2514<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__I86__</code></p></td>
2515<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2516</tr>
2517<tr>
2518<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__INTEL__</code></p></td>
2519<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2520</tr>
2521<tr>
2522<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__I86__</code></p></td>
2523<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
2524</tr>
2525<tr>
2526<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86</code></p></td>
2527<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
2528</tr>
2529<tr>
2530<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i686__</code></p></td>
2531<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
2532</tr>
2533<tr>
2534<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i586__</code></p></td>
2535<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
2536</tr>
2537<tr>
2538<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i486__</code></p></td>
2539<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
2540</tr>
2541<tr>
2542<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__i386__</code></p></td>
2543<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
2544</tr>
2545</tbody>
2546</table>
2547</div>
2548<div class="sect3">
2549<h4 id="_boost_arch_x86_64"><a class="anchor" href="#_boost_arch_x86_64"></a>4.1.21. <code>BOOST_ARCH_X86_64</code></h4>
2550<div class="paragraph">
2551<p><a href="http://en.wikipedia.org/wiki/Ia64">Intel IA-64</a> architecture.</p>
2552</div>
2553<table class="tableblock frame-all grid-all stretch">
2554<colgroup>
2555<col style="width: 50%;">
2556<col style="width: 50%;">
2557</colgroup>
2558<thead>
2559<tr>
2560<th class="tableblock halign-left valign-top">Symbol</th>
2561<th class="tableblock halign-left valign-top">Version</th>
2562</tr>
2563</thead>
2564<tbody>
2565<tr>
2566<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__x86_64</code></p></td>
2567<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2568</tr>
2569<tr>
2570<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__x86_64__</code></p></td>
2571<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2572</tr>
2573<tr>
2574<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__amd64__</code></p></td>
2575<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2576</tr>
2577<tr>
2578<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__amd64</code></p></td>
2579<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2580</tr>
2581<tr>
2582<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_X64</code></p></td>
2583<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2584</tr>
2585</tbody>
2586</table>
2587</div>
2588</div>
2589<div class="sect2">
2590<h3 id="_boost_comp_compiler_macros"><a class="anchor" href="#_boost_comp_compiler_macros"></a>4.2. <code>BOOST_COMP</code> compiler macros</h3>
2591<div class="sect3">
2592<h4 id="_boost_comp_borland"><a class="anchor" href="#_boost_comp_borland"></a>4.2.1. <code>BOOST_COMP_BORLAND</code></h4>
2593<div class="paragraph">
2594<p><a href="http://en.wikipedia.org/wiki/C_plus_plus_builder">Borland C++</a> compiler.
2595Version number available as major, minor, and patch.</p>
2596</div>
2597<table class="tableblock frame-all grid-all stretch">
2598<colgroup>
2599<col style="width: 50%;">
2600<col style="width: 50%;">
2601</colgroup>
2602<thead>
2603<tr>
2604<th class="tableblock halign-left valign-top">Symbol</th>
2605<th class="tableblock halign-left valign-top">Version</th>
2606</tr>
2607</thead>
2608<tbody>
2609<tr>
2610<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__BORLANDC__</code></p></td>
2611<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2612</tr>
2613<tr>
2614<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CODEGEARC__</code></p></td>
2615<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2616</tr>
2617<tr>
2618<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__BORLANDC__</code></p></td>
2619<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2620</tr>
2621<tr>
2622<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CODEGEARC__</code></p></td>
2623<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2624</tr>
2625</tbody>
2626</table>
2627</div>
2628<div class="sect3">
2629<h4 id="_boost_comp_clang"><a class="anchor" href="#_boost_comp_clang"></a>4.2.2. <code>BOOST_COMP_CLANG</code></h4>
2630<div class="paragraph">
2631<p><a href="http://en.wikipedia.org/wiki/Clang">Clang</a> compiler.
2632Version number available as major, minor, and patch.</p>
2633</div>
2634<table class="tableblock frame-all grid-all stretch">
2635<colgroup>
2636<col style="width: 50%;">
2637<col style="width: 50%;">
2638</colgroup>
2639<thead>
2640<tr>
2641<th class="tableblock halign-left valign-top">Symbol</th>
2642<th class="tableblock halign-left valign-top">Version</th>
2643</tr>
2644</thead>
2645<tbody>
2646<tr>
2647<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__clang__</code></p></td>
2648<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2649</tr>
2650<tr>
2651<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__clang_major__</code>, <code>__clang_minor__</code>, <code>__clang_patchlevel__</code></p></td>
2652<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2653</tr>
2654</tbody>
2655</table>
2656</div>
2657<div class="sect3">
2658<h4 id="_boost_comp_como"><a class="anchor" href="#_boost_comp_como"></a>4.2.3. <code>BOOST_COMP_COMO</code></h4>
2659<div class="paragraph">
2660<p><a href="http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B">Comeau C++</a> compiler.
2661Version number available as major, minor, and patch.</p>
2662</div>
2663<table class="tableblock frame-all grid-all stretch">
2664<colgroup>
2665<col style="width: 50%;">
2666<col style="width: 50%;">
2667</colgroup>
2668<thead>
2669<tr>
2670<th class="tableblock halign-left valign-top">Symbol</th>
2671<th class="tableblock halign-left valign-top">Version</th>
2672</tr>
2673</thead>
2674<tbody>
2675<tr>
2676<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__COMO__</code></p></td>
2677<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2678</tr>
2679<tr>
2680<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__COMO_VERSION__</code></p></td>
2681<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2682</tr>
2683</tbody>
2684</table>
2685</div>
2686<div class="sect3">
2687<h4 id="_boost_comp_dec"><a class="anchor" href="#_boost_comp_dec"></a>4.2.4. <code>BOOST_COMP_DEC</code></h4>
2688<div class="paragraph">
2689<p><a href="http://www.openvms.compaq.com/openvms/brochures/deccplus/">Compaq C/C++</a> compiler.
2690Version number available as major, minor, and patch.</p>
2691</div>
2692<table class="tableblock frame-all grid-all stretch">
2693<colgroup>
2694<col style="width: 50%;">
2695<col style="width: 50%;">
2696</colgroup>
2697<thead>
2698<tr>
2699<th class="tableblock halign-left valign-top">Symbol</th>
2700<th class="tableblock halign-left valign-top">Version</th>
2701</tr>
2702</thead>
2703<tbody>
2704<tr>
2705<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DECCXX</code></p></td>
2706<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2707</tr>
2708<tr>
2709<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DECC</code></p></td>
2710<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2711</tr>
2712<tr>
2713<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DECCXX_VER</code></p></td>
2714<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2715</tr>
2716<tr>
2717<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DECC_VER</code></p></td>
2718<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2719</tr>
2720</tbody>
2721</table>
2722</div>
2723<div class="sect3">
2724<h4 id="_boost_comp_diab"><a class="anchor" href="#_boost_comp_diab"></a>4.2.5. <code>BOOST_COMP_DIAB</code></h4>
2725<div class="paragraph">
2726<p><a href="http://www.windriver.com/products/development_suite/wind_river_compiler/">Diab C/C++</a> compiler.
2727Version number available as major, minor, and patch.</p>
2728</div>
2729<table class="tableblock frame-all grid-all stretch">
2730<colgroup>
2731<col style="width: 50%;">
2732<col style="width: 50%;">
2733</colgroup>
2734<thead>
2735<tr>
2736<th class="tableblock halign-left valign-top">Symbol</th>
2737<th class="tableblock halign-left valign-top">Version</th>
2738</tr>
2739</thead>
2740<tbody>
2741<tr>
2742<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DCC__</code></p></td>
2743<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2744</tr>
2745<tr>
2746<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VERSION_NUMBER__</code></p></td>
2747<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2748</tr>
2749</tbody>
2750</table>
2751</div>
2752<div class="sect3">
2753<h4 id="_boost_comp_dmc"><a class="anchor" href="#_boost_comp_dmc"></a>4.2.6. <code>BOOST_COMP_DMC</code></h4>
2754<div class="paragraph">
2755<p><a href="http://en.wikipedia.org/wiki/Digital_Mars">Digital Mars</a> compiler.
2756Version number available as major, minor, and patch.</p>
2757</div>
2758<table class="tableblock frame-all grid-all stretch">
2759<colgroup>
2760<col style="width: 50%;">
2761<col style="width: 50%;">
2762</colgroup>
2763<thead>
2764<tr>
2765<th class="tableblock halign-left valign-top">Symbol</th>
2766<th class="tableblock halign-left valign-top">Version</th>
2767</tr>
2768</thead>
2769<tbody>
2770<tr>
2771<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DMC__</code></p></td>
2772<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2773</tr>
2774<tr>
2775<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DMC__</code></p></td>
2776<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2777</tr>
2778</tbody>
2779</table>
2780</div>
2781<div class="sect3">
2782<h4 id="_boost_comp_sysc"><a class="anchor" href="#_boost_comp_sysc"></a>4.2.7. <code>BOOST_COMP_SYSC</code></h4>
2783<div class="paragraph">
2784<p><a href="http://www.dignus.com/dcxx/">Dignus Systems/C++</a> compiler.
2785Version number available as major, minor, and patch.</p>
2786</div>
2787<table class="tableblock frame-all grid-all stretch">
2788<colgroup>
2789<col style="width: 50%;">
2790<col style="width: 50%;">
2791</colgroup>
2792<thead>
2793<tr>
2794<th class="tableblock halign-left valign-top">Symbol</th>
2795<th class="tableblock halign-left valign-top">Version</th>
2796</tr>
2797</thead>
2798<tbody>
2799<tr>
2800<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SYSC__</code></p></td>
2801<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2802</tr>
2803<tr>
2804<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SYSC_VER__</code></p></td>
2805<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2806</tr>
2807</tbody>
2808</table>
2809</div>
2810<div class="sect3">
2811<h4 id="_boost_comp_edg"><a class="anchor" href="#_boost_comp_edg"></a>4.2.8. <code>BOOST_COMP_EDG</code></h4>
2812<div class="paragraph">
2813<p><a href="http://en.wikipedia.org/wiki/Edison_Design_Group">EDG C++ Frontend</a> compiler.
2814Version number available as major, minor, and patch.</p>
2815</div>
2816<table class="tableblock frame-all grid-all stretch">
2817<colgroup>
2818<col style="width: 50%;">
2819<col style="width: 50%;">
2820</colgroup>
2821<thead>
2822<tr>
2823<th class="tableblock halign-left valign-top">Symbol</th>
2824<th class="tableblock halign-left valign-top">Version</th>
2825</tr>
2826</thead>
2827<tbody>
2828<tr>
2829<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__EDG__</code></p></td>
2830<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2831</tr>
2832<tr>
2833<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__EDG_VERSION__</code></p></td>
2834<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
2835</tr>
2836</tbody>
2837</table>
2838</div>
2839<div class="sect3">
2840<h4 id="_boost_comp_path"><a class="anchor" href="#_boost_comp_path"></a>4.2.9. <code>BOOST_COMP_PATH</code></h4>
2841<div class="paragraph">
2842<p><a href="http://en.wikipedia.org/wiki/PathScale">EKOpath</a> compiler.
2843Version number available as major, minor, and patch.</p>
2844</div>
2845<table class="tableblock frame-all grid-all stretch">
2846<colgroup>
2847<col style="width: 50%;">
2848<col style="width: 50%;">
2849</colgroup>
2850<thead>
2851<tr>
2852<th class="tableblock halign-left valign-top">Symbol</th>
2853<th class="tableblock halign-left valign-top">Version</th>
2854</tr>
2855</thead>
2856<tbody>
2857<tr>
2858<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PATHCC__</code></p></td>
2859<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2860</tr>
2861<tr>
2862<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PATHCC__</code>, <code>__PATHCC_MINOR__</code>, <code>__PATHCC_PATCHLEVEL__</code></p></td>
2863<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2864</tr>
2865</tbody>
2866</table>
2867</div>
2868<div class="sect3">
2869<h4 id="_boost_comp_gnuc"><a class="anchor" href="#_boost_comp_gnuc"></a>4.2.10. <code>BOOST_COMP_GNUC</code></h4>
2870<div class="paragraph">
2871<p><a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection">Gnu GCC C/C++</a> compiler.
2872Version number available as major, minor, and patch (if available).</p>
2873</div>
2874<table class="tableblock frame-all grid-all stretch">
2875<colgroup>
2876<col style="width: 50%;">
2877<col style="width: 50%;">
2878</colgroup>
2879<thead>
2880<tr>
2881<th class="tableblock halign-left valign-top">Symbol</th>
2882<th class="tableblock halign-left valign-top">Version</th>
2883</tr>
2884</thead>
2885<tbody>
2886<tr>
2887<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GNUC__</code></p></td>
2888<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2889</tr>
2890<tr>
2891<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GNUC__</code>, <code>__GNUC_MINOR__</code>, <code>__GNUC_PATCHLEVEL__</code></p></td>
2892<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2893</tr>
2894<tr>
2895<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GNUC__</code>, <code>__GNUC_MINOR__</code></p></td>
2896<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
2897</tr>
2898</tbody>
2899</table>
2900</div>
2901<div class="sect3">
2902<h4 id="_boost_comp_gccxml"><a class="anchor" href="#_boost_comp_gccxml"></a>4.2.11. <code>BOOST_COMP_GCCXML</code></h4>
2903<div class="paragraph">
2904<p><a href="http://www.gccxml.org/">GCC XML</a> compiler.</p>
2905</div>
2906<table class="tableblock frame-all grid-all stretch">
2907<colgroup>
2908<col style="width: 50%;">
2909<col style="width: 50%;">
2910</colgroup>
2911<thead>
2912<tr>
2913<th class="tableblock halign-left valign-top">Symbol</th>
2914<th class="tableblock halign-left valign-top">Version</th>
2915</tr>
2916</thead>
2917<tbody>
2918<tr>
2919<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GCCXML__</code></p></td>
2920<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2921</tr>
2922</tbody>
2923</table>
2924</div>
2925<div class="sect3">
2926<h4 id="_boost_comp_ghs"><a class="anchor" href="#_boost_comp_ghs"></a>4.2.12. <code>BOOST_COMP_GHS</code></h4>
2927<div class="paragraph">
2928<p><a href="http://en.wikipedia.org/wiki/Green_Hills_Software">Green Hills C/C++</a> compiler.
2929Version number available as major, minor, and patch.</p>
2930</div>
2931<table class="tableblock frame-all grid-all stretch">
2932<colgroup>
2933<col style="width: 50%;">
2934<col style="width: 50%;">
2935</colgroup>
2936<thead>
2937<tr>
2938<th class="tableblock halign-left valign-top">Symbol</th>
2939<th class="tableblock halign-left valign-top">Version</th>
2940</tr>
2941</thead>
2942<tbody>
2943<tr>
2944<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ghs</code></p></td>
2945<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2946</tr>
2947<tr>
2948<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ghs__</code></p></td>
2949<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2950</tr>
2951<tr>
2952<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GHS_VERSION_NUMBER__</code></p></td>
2953<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2954</tr>
2955<tr>
2956<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ghs</code></p></td>
2957<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2958</tr>
2959</tbody>
2960</table>
2961</div>
2962<div class="sect3">
2963<h4 id="_boost_comp_hpacc"><a class="anchor" href="#_boost_comp_hpacc"></a>4.2.13. <code>BOOST_COMP_HPACC</code></h4>
2964<div class="paragraph">
2965<p>HP aC++ compiler.
2966Version number available as major, minor, and patch.</p>
2967</div>
2968<table class="tableblock frame-all grid-all stretch">
2969<colgroup>
2970<col style="width: 50%;">
2971<col style="width: 50%;">
2972</colgroup>
2973<thead>
2974<tr>
2975<th class="tableblock halign-left valign-top">Symbol</th>
2976<th class="tableblock halign-left valign-top">Version</th>
2977</tr>
2978</thead>
2979<tbody>
2980<tr>
2981<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HP_aCC</code></p></td>
2982<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
2983</tr>
2984<tr>
2985<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HP_aCC</code></p></td>
2986<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
2987</tr>
2988</tbody>
2989</table>
2990</div>
2991<div class="sect3">
2992<h4 id="_boost_comp_iar"><a class="anchor" href="#_boost_comp_iar"></a>4.2.14. <code>BOOST_COMP_IAR</code></h4>
2993<div class="paragraph">
2994<p>IAR C/C++ compiler.
2995Version number available as major, minor, and patch.</p>
2996</div>
2997<table class="tableblock frame-all grid-all stretch">
2998<colgroup>
2999<col style="width: 50%;">
3000<col style="width: 50%;">
3001</colgroup>
3002<thead>
3003<tr>
3004<th class="tableblock halign-left valign-top">Symbol</th>
3005<th class="tableblock halign-left valign-top">Version</th>
3006</tr>
3007</thead>
3008<tbody>
3009<tr>
3010<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__IAR_SYSTEMS_ICC__</code></p></td>
3011<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3012</tr>
3013<tr>
3014<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VER__</code></p></td>
3015<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3016</tr>
3017</tbody>
3018</table>
3019</div>
3020<div class="sect3">
3021<h4 id="_boost_comp_ibm"><a class="anchor" href="#_boost_comp_ibm"></a>4.2.15. <code>BOOST_COMP_IBM</code></h4>
3022<div class="paragraph">
3023<p><a href="http://en.wikipedia.org/wiki/VisualAge">IBM XL C/C++</a> compiler.
3024Version number available as major, minor, and patch.</p>
3025</div>
3026<table class="tableblock frame-all grid-all stretch">
3027<colgroup>
3028<col style="width: 50%;">
3029<col style="width: 50%;">
3030</colgroup>
3031<thead>
3032<tr>
3033<th class="tableblock halign-left valign-top">Symbol</th>
3034<th class="tableblock halign-left valign-top">Version</th>
3035</tr>
3036</thead>
3037<tbody>
3038<tr>
3039<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__IBMCPP__</code></p></td>
3040<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3041</tr>
3042<tr>
3043<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__xlC__</code></p></td>
3044<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3045</tr>
3046<tr>
3047<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__xlc__</code></p></td>
3048<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3049</tr>
3050<tr>
3051<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__COMPILER_VER__</code></p></td>
3052<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3053</tr>
3054<tr>
3055<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__xlC__</code></p></td>
3056<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3057</tr>
3058<tr>
3059<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__xlc__</code></p></td>
3060<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3061</tr>
3062<tr>
3063<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__IBMCPP__</code></p></td>
3064<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3065</tr>
3066</tbody>
3067</table>
3068</div>
3069<div class="sect3">
3070<h4 id="_boost_comp_intel"><a class="anchor" href="#_boost_comp_intel"></a>4.2.16. <code>BOOST_COMP_INTEL</code></h4>
3071<div class="paragraph">
3072<p><a href="http://en.wikipedia.org/wiki/Intel_C%2B%2B">Intel C/C++</a> compiler.
3073Version number available as major, minor, and patch.</p>
3074</div>
3075<table class="tableblock frame-all grid-all stretch">
3076<colgroup>
3077<col style="width: 50%;">
3078<col style="width: 50%;">
3079</colgroup>
3080<thead>
3081<tr>
3082<th class="tableblock halign-left valign-top">Symbol</th>
3083<th class="tableblock halign-left valign-top">Version</th>
3084</tr>
3085</thead>
3086<tbody>
3087<tr>
3088<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__INTEL_COMPILER</code></p></td>
3089<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3090</tr>
3091<tr>
3092<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ICL</code></p></td>
3093<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3094</tr>
3095<tr>
3096<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ICC</code></p></td>
3097<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3098</tr>
3099<tr>
3100<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ECC</code></p></td>
3101<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3102</tr>
3103<tr>
3104<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__INTEL_COMPILER</code></p></td>
3105<td class="tableblock halign-left valign-top"><p class="tableblock">V.R</p></td>
3106</tr>
3107<tr>
3108<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__INTEL_COMPILER</code> and <code>__INTEL_COMPILER_UPDATE</code></p></td>
3109<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3110</tr>
3111</tbody>
3112</table>
3113<div class="admonitionblock note">
3114<table>
3115<tr>
3116<td class="icon">
3117<div class="title">ℹ</div>
3118</td>
3119<td class="content">
3120Because of an Intel mistake in the release version numbering when
3121<code>__INTEL_COMPILER</code> is <code>9999</code> it is detected as version 12.1.0.
3122</td>
3123</tr>
3124</table>
3125</div>
3126</div>
3127<div class="sect3">
3128<h4 id="_boost_comp_kcc"><a class="anchor" href="#_boost_comp_kcc"></a>4.2.17. <code>BOOST_COMP_KCC</code></h4>
3129<div class="paragraph">
3130<p>Kai C++ compiler.
3131Version number available as major, minor, and patch.</p>
3132</div>
3133<table class="tableblock frame-all grid-all stretch">
3134<colgroup>
3135<col style="width: 50%;">
3136<col style="width: 50%;">
3137</colgroup>
3138<thead>
3139<tr>
3140<th class="tableblock halign-left valign-top">Symbol</th>
3141<th class="tableblock halign-left valign-top">Version</th>
3142</tr>
3143</thead>
3144<tbody>
3145<tr>
3146<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__KCC</code></p></td>
3147<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3148</tr>
3149<tr>
3150<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__KCC_VERSION</code></p></td>
3151<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3152</tr>
3153</tbody>
3154</table>
3155</div>
3156<div class="sect3">
3157<h4 id="_boost_comp_llvm"><a class="anchor" href="#_boost_comp_llvm"></a>4.2.18. <code>BOOST_COMP_LLVM</code></h4>
3158<div class="paragraph">
3159<p><a href="http://en.wikipedia.org/wiki/LLVM">LLVM</a> compiler.</p>
3160</div>
3161<table class="tableblock frame-all grid-all stretch">
3162<colgroup>
3163<col style="width: 50%;">
3164<col style="width: 50%;">
3165</colgroup>
3166<thead>
3167<tr>
3168<th class="tableblock halign-left valign-top">Symbol</th>
3169<th class="tableblock halign-left valign-top">Version</th>
3170</tr>
3171</thead>
3172<tbody>
3173<tr>
3174<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__llvm__</code></p></td>
3175<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3176</tr>
3177</tbody>
3178</table>
3179</div>
3180<div class="sect3">
3181<h4 id="_boost_comp_highc"><a class="anchor" href="#_boost_comp_highc"></a>4.2.19. <code>BOOST_COMP_HIGHC</code></h4>
3182<div class="paragraph">
3183<p>MetaWare High C/C++ compiler.</p>
3184</div>
3185<table class="tableblock frame-all grid-all stretch">
3186<colgroup>
3187<col style="width: 50%;">
3188<col style="width: 50%;">
3189</colgroup>
3190<thead>
3191<tr>
3192<th class="tableblock halign-left valign-top">Symbol</th>
3193<th class="tableblock halign-left valign-top">Version</th>
3194</tr>
3195</thead>
3196<tbody>
3197<tr>
3198<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HIGHC__</code></p></td>
3199<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3200</tr>
3201</tbody>
3202</table>
3203</div>
3204<div class="sect3">
3205<h4 id="_boost_comp_mwerks"><a class="anchor" href="#_boost_comp_mwerks"></a>4.2.20. <code>BOOST_COMP_MWERKS</code></h4>
3206<div class="paragraph">
3207<p><a href="http://en.wikipedia.org/wiki/CodeWarrior">Metrowerks CodeWarrior</a> compiler.
3208Version number available as major, minor, and patch.</p>
3209</div>
3210<table class="tableblock frame-all grid-all stretch">
3211<colgroup>
3212<col style="width: 50%;">
3213<col style="width: 50%;">
3214</colgroup>
3215<thead>
3216<tr>
3217<th class="tableblock halign-left valign-top">Symbol</th>
3218<th class="tableblock halign-left valign-top">Version</th>
3219</tr>
3220</thead>
3221<tbody>
3222<tr>
3223<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MWERKS__</code></p></td>
3224<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3225</tr>
3226<tr>
3227<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CWCC__</code></p></td>
3228<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3229</tr>
3230<tr>
3231<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CWCC__</code></p></td>
3232<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3233</tr>
3234<tr>
3235<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MWERKS__</code></p></td>
3236<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P &gt;= 4.2.0</p></td>
3237</tr>
3238<tr>
3239<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MWERKS__</code></p></td>
3240<td class="tableblock halign-left valign-top"><p class="tableblock">9.R.0</p></td>
3241</tr>
3242<tr>
3243<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MWERKS__</code></p></td>
3244<td class="tableblock halign-left valign-top"><p class="tableblock">8.R.0</p></td>
3245</tr>
3246</tbody>
3247</table>
3248</div>
3249<div class="sect3">
3250<h4 id="_boost_comp_mri"><a class="anchor" href="#_boost_comp_mri"></a>4.2.21. <code>BOOST_COMP_MRI</code></h4>
3251<div class="paragraph">
3252<p><a href="http://www.mentor.com/microtec/">Microtec C/C++</a> compiler.</p>
3253</div>
3254<table class="tableblock frame-all grid-all stretch">
3255<colgroup>
3256<col style="width: 50%;">
3257<col style="width: 50%;">
3258</colgroup>
3259<thead>
3260<tr>
3261<th class="tableblock halign-left valign-top">Symbol</th>
3262<th class="tableblock halign-left valign-top">Version</th>
3263</tr>
3264</thead>
3265<tbody>
3266<tr>
3267<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MRI</code></p></td>
3268<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3269</tr>
3270</tbody>
3271</table>
3272</div>
3273<div class="sect3">
3274<h4 id="_boost_comp_mpw"><a class="anchor" href="#_boost_comp_mpw"></a>4.2.22. <code>BOOST_COMP_MPW</code></h4>
3275<div class="paragraph">
3276<p><a href="http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop">MPW C++</a> compiler.
3277Version number available as major, and minor.</p>
3278</div>
3279<table class="tableblock frame-all grid-all stretch">
3280<colgroup>
3281<col style="width: 50%;">
3282<col style="width: 50%;">
3283</colgroup>
3284<thead>
3285<tr>
3286<th class="tableblock halign-left valign-top">Symbol</th>
3287<th class="tableblock halign-left valign-top">Version</th>
3288</tr>
3289</thead>
3290<tbody>
3291<tr>
3292<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MRC__</code></p></td>
3293<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3294</tr>
3295<tr>
3296<td class="tableblock halign-left valign-top"><p class="tableblock"><code>MPW_C</code></p></td>
3297<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3298</tr>
3299<tr>
3300<td class="tableblock halign-left valign-top"><p class="tableblock"><code>MPW_CPLUS</code></p></td>
3301<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3302</tr>
3303<tr>
3304<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MRC__</code></p></td>
3305<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
3306</tr>
3307</tbody>
3308</table>
3309</div>
3310<div class="sect3">
3311<h4 id="_boost_comp_nvcc"><a class="anchor" href="#_boost_comp_nvcc"></a>4.2.23. <code>BOOST_COMP_NVCC</code></h4>
3312<div class="paragraph">
3313<p><a href="https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler">NVCC</a> compiler.
3314Version number available as major, minor, and patch beginning with version 7.5.</p>
3315</div>
3316<table class="tableblock frame-all grid-all stretch">
3317<colgroup>
3318<col style="width: 50%;">
3319<col style="width: 50%;">
3320</colgroup>
3321<thead>
3322<tr>
3323<th class="tableblock halign-left valign-top">Symbol</th>
3324<th class="tableblock halign-left valign-top">Version</th>
3325</tr>
3326</thead>
3327<tbody>
3328<tr>
3329<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__NVCC__</code></p></td>
3330<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3331</tr>
3332<tr>
3333<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CUDACC_VER_MAJOR__</code>, <code>__CUDACC_VER_MINOR__</code>, <code>__CUDACC_VER_BUILD__</code></p></td>
3334<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3335</tr>
3336</tbody>
3337</table>
3338</div>
3339<div class="sect3">
3340<h4 id="_boost_comp_palm"><a class="anchor" href="#_boost_comp_palm"></a>4.2.24. <code>BOOST_COMP_PALM</code></h4>
3341<div class="paragraph">
3342<p>Palm C/C++ compiler.
3343Version number available as major, minor, and patch.</p>
3344</div>
3345<table class="tableblock frame-all grid-all stretch">
3346<colgroup>
3347<col style="width: 50%;">
3348<col style="width: 50%;">
3349</colgroup>
3350<thead>
3351<tr>
3352<th class="tableblock halign-left valign-top">Symbol</th>
3353<th class="tableblock halign-left valign-top">Version</th>
3354</tr>
3355</thead>
3356<tbody>
3357<tr>
3358<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_PACC_VER</code></p></td>
3359<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3360</tr>
3361<tr>
3362<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_PACC_VER</code></p></td>
3363<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3364</tr>
3365</tbody>
3366</table>
3367</div>
3368<div class="sect3">
3369<h4 id="_boost_comp_pgi"><a class="anchor" href="#_boost_comp_pgi"></a>4.2.25. <code>BOOST_COMP_PGI</code></h4>
3370<div class="paragraph">
3371<p><a href="http://en.wikipedia.org/wiki/The_Portland_Group">Portland Group C/C++</a> compiler.</p>
3372</div>
3373<table class="tableblock frame-all grid-all stretch">
3374<colgroup>
3375<col style="width: 50%;">
3376<col style="width: 50%;">
3377</colgroup>
3378<thead>
3379<tr>
3380<th class="tableblock halign-left valign-top">Symbol</th>
3381<th class="tableblock halign-left valign-top">Version</th>
3382</tr>
3383</thead>
3384<tbody>
3385<tr>
3386<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PGI</code></p></td>
3387<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3388</tr>
3389<tr>
3390<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__PGIC__</code>, <code>__PGIC_MINOR__</code>, <code>__PGIC_PATCHLEVEL__</code></p></td>
3391<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3392</tr>
3393</tbody>
3394</table>
3395</div>
3396<div class="sect3">
3397<h4 id="_boost_comp_sgi"><a class="anchor" href="#_boost_comp_sgi"></a>4.2.26. <code>BOOST_COMP_SGI</code></h4>
3398<div class="paragraph">
3399<p><a href="http://en.wikipedia.org/wiki/MIPSpro">SGI MIPSpro</a> compiler.
3400Version number available as major, minor, and patch.</p>
3401</div>
3402<table class="tableblock frame-all grid-all stretch">
3403<colgroup>
3404<col style="width: 50%;">
3405<col style="width: 50%;">
3406</colgroup>
3407<thead>
3408<tr>
3409<th class="tableblock halign-left valign-top">Symbol</th>
3410<th class="tableblock halign-left valign-top">Version</th>
3411</tr>
3412</thead>
3413<tbody>
3414<tr>
3415<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sgi</code></p></td>
3416<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3417</tr>
3418<tr>
3419<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sgi</code></p></td>
3420<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3421</tr>
3422<tr>
3423<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_SGI_COMPILER_VERSION</code></p></td>
3424<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3425</tr>
3426<tr>
3427<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_COMPILER_VERSION</code></p></td>
3428<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3429</tr>
3430</tbody>
3431</table>
3432</div>
3433<div class="sect3">
3434<h4 id="_boost_comp_sunpro"><a class="anchor" href="#_boost_comp_sunpro"></a>4.2.27. <code>BOOST_COMP_SUNPRO</code></h4>
3435<div class="paragraph">
3436<p><a href="http://en.wikipedia.org/wiki/Oracle_Solaris_Studio">Oracle Solaris Studio</a> compiler.
3437Version number available as major, minor, and patch.</p>
3438</div>
3439<table class="tableblock frame-all grid-all stretch">
3440<colgroup>
3441<col style="width: 50%;">
3442<col style="width: 50%;">
3443</colgroup>
3444<thead>
3445<tr>
3446<th class="tableblock halign-left valign-top">Symbol</th>
3447<th class="tableblock halign-left valign-top">Version</th>
3448</tr>
3449</thead>
3450<tbody>
3451<tr>
3452<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_CC</code></p></td>
3453<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3454</tr>
3455<tr>
3456<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_C</code></p></td>
3457<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3458</tr>
3459<tr>
3460<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_CC</code></p></td>
3461<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3462</tr>
3463<tr>
3464<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_C</code></p></td>
3465<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3466</tr>
3467<tr>
3468<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_CC</code></p></td>
3469<td class="tableblock halign-left valign-top"><p class="tableblock">VV.RR.P</p></td>
3470</tr>
3471<tr>
3472<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SUNPRO_C</code></p></td>
3473<td class="tableblock halign-left valign-top"><p class="tableblock">VV.RR.P</p></td>
3474</tr>
3475</tbody>
3476</table>
3477</div>
3478<div class="sect3">
3479<h4 id="_boost_comp_tendra"><a class="anchor" href="#_boost_comp_tendra"></a>4.2.28. <code>BOOST_COMP_TENDRA</code></h4>
3480<div class="paragraph">
3481<p><a href="http://en.wikipedia.org/wiki/TenDRA_Compiler">TenDRA C/C++</a> compiler.</p>
3482</div>
3483<table class="tableblock frame-all grid-all stretch">
3484<colgroup>
3485<col style="width: 50%;">
3486<col style="width: 50%;">
3487</colgroup>
3488<thead>
3489<tr>
3490<th class="tableblock halign-left valign-top">Symbol</th>
3491<th class="tableblock halign-left valign-top">Version</th>
3492</tr>
3493</thead>
3494<tbody>
3495<tr>
3496<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TenDRA__</code></p></td>
3497<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3498</tr>
3499</tbody>
3500</table>
3501</div>
3502<div class="sect3">
3503<h4 id="_boost_comp_msvc"><a class="anchor" href="#_boost_comp_msvc"></a>4.2.29. <code>BOOST_COMP_MSVC</code></h4>
3504<div class="paragraph">
3505<p><a href="http://en.wikipedia.org/wiki/Visual_studio">Microsoft Visual C/C++</a> compiler.
3506Version number available as major, minor, and patch.</p>
3507</div>
3508<table class="tableblock frame-all grid-all stretch">
3509<colgroup>
3510<col style="width: 50%;">
3511<col style="width: 50%;">
3512</colgroup>
3513<thead>
3514<tr>
3515<th class="tableblock halign-left valign-top">Symbol</th>
3516<th class="tableblock halign-left valign-top">Version</th>
3517</tr>
3518</thead>
3519<tbody>
3520<tr>
3521<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSC_VER</code></p></td>
3522<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3523</tr>
3524<tr>
3525<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSC_FULL_VER</code></p></td>
3526<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3527</tr>
3528<tr>
3529<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_MSC_VER</code></p></td>
3530<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
3531</tr>
3532</tbody>
3533</table>
3534<div class="admonitionblock note">
3535<table>
3536<tr>
3537<td class="icon">
3538<div class="title">ℹ</div>
3539</td>
3540<td class="content">
3541Release of Visual Studio after 2015 will no longer be identified
3542by Boost Predef as the marketing version number. Instead we use the
3543compiler version number directly, i.e. the _MSC_VER number.
3544</td>
3545</tr>
3546</table>
3547</div>
3548</div>
3549<div class="sect3">
3550<h4 id="_boost_comp_watcom"><a class="anchor" href="#_boost_comp_watcom"></a>4.2.30. <code>BOOST_COMP_WATCOM</code></h4>
3551<div class="paragraph">
3552<p><a href="http://en.wikipedia.org/wiki/Watcom">Watcom C++</a> compiler.
3553Version number available as major, and minor.</p>
3554</div>
3555<table class="tableblock frame-all grid-all stretch">
3556<colgroup>
3557<col style="width: 50%;">
3558<col style="width: 50%;">
3559</colgroup>
3560<thead>
3561<tr>
3562<th class="tableblock halign-left valign-top">Symbol</th>
3563<th class="tableblock halign-left valign-top">Version</th>
3564</tr>
3565</thead>
3566<tbody>
3567<tr>
3568<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__WATCOMC__</code></p></td>
3569<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3570</tr>
3571<tr>
3572<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__WATCOMC__</code></p></td>
3573<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3574</tr>
3575</tbody>
3576</table>
3577</div>
3578</div>
3579<div class="sect2">
3580<h3 id="_boost_lang_language_standards_macros"><a class="anchor" href="#_boost_lang_language_standards_macros"></a>4.3. <code>BOOST_LANG</code> language standards macros</h3>
3581<div class="sect3">
3582<h4 id="_boost_lang_cuda"><a class="anchor" href="#_boost_lang_cuda"></a>4.3.1. <code>BOOST_LANG_CUDA</code></h4>
3583<div class="paragraph">
3584<p><a href="https://en.wikipedia.org/wiki/CUDA">CUDA C/C++</a> language.
3585If available, the version is detected as VV.RR.P.</p>
3586</div>
3587<table class="tableblock frame-all grid-all stretch">
3588<colgroup>
3589<col style="width: 50%;">
3590<col style="width: 50%;">
3591</colgroup>
3592<thead>
3593<tr>
3594<th class="tableblock halign-left valign-top">Symbol</th>
3595<th class="tableblock halign-left valign-top">Version</th>
3596</tr>
3597</thead>
3598<tbody>
3599<tr>
3600<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CUDACC__</code></p></td>
3601<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3602</tr>
3603<tr>
3604<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CUDA__</code></p></td>
3605<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3606</tr>
3607<tr>
3608<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CUDA_VERSION</code></p></td>
3609<td class="tableblock halign-left valign-top"><p class="tableblock">VV.RR.P</p></td>
3610</tr>
3611</tbody>
3612</table>
3613</div>
3614<div class="sect3">
3615<h4 id="_boost_lang_objc"><a class="anchor" href="#_boost_lang_objc"></a>4.3.2. <code>BOOST_LANG_OBJC</code></h4>
3616<div class="paragraph">
3617<p><a href="http://en.wikipedia.org/wiki/Objective-C">Objective-C</a> language.</p>
3618</div>
3619<table class="tableblock frame-all grid-all stretch">
3620<colgroup>
3621<col style="width: 50%;">
3622<col style="width: 50%;">
3623</colgroup>
3624<thead>
3625<tr>
3626<th class="tableblock halign-left valign-top">Symbol</th>
3627<th class="tableblock halign-left valign-top">Version</th>
3628</tr>
3629</thead>
3630<tbody>
3631<tr>
3632<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__OBJC__</code></p></td>
3633<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3634</tr>
3635</tbody>
3636</table>
3637</div>
3638<div class="sect3">
3639<h4 id="_boost_lang_stdc"><a class="anchor" href="#_boost_lang_stdc"></a>4.3.3. <code>BOOST_LANG_STDC</code></h4>
3640<div class="paragraph">
3641<p><a href="http://en.wikipedia.org/wiki/C_(programming_language)">Standard C</a> language.
3642If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.</p>
3643</div>
3644<table class="tableblock frame-all grid-all stretch">
3645<colgroup>
3646<col style="width: 50%;">
3647<col style="width: 50%;">
3648</colgroup>
3649<thead>
3650<tr>
3651<th class="tableblock halign-left valign-top">Symbol</th>
3652<th class="tableblock halign-left valign-top">Version</th>
3653</tr>
3654</thead>
3655<tbody>
3656<tr>
3657<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__STDC__</code></p></td>
3658<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3659</tr>
3660<tr>
3661<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__STDC_VERSION__</code></p></td>
3662<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3663</tr>
3664</tbody>
3665</table>
3666</div>
3667<div class="sect3">
3668<h4 id="_boost_lang_stdcpp"><a class="anchor" href="#_boost_lang_stdcpp"></a>4.3.4. <code>BOOST_LANG_STDCPP</code></h4>
3669<div class="paragraph">
3670<p><a href="http://en.wikipedia.org/wiki/C%2B%2B">Standard C++</a> language.
3671If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
3672Because of the way the C++ standardization process works the
3673defined version year will not be the commonly known year of the standard.
3674Specifically the defined versions are:</p>
3675</div>
3676<table class="tableblock frame-all grid-all stretch">
3677<caption class="title">Table 1. Detected Version Number vs. C++ Standard Year</caption>
3678<colgroup>
3679<col style="width: 33.3333%;">
3680<col style="width: 33.3333%;">
3681<col style="width: 33.3334%;">
3682</colgroup>
3683<thead>
3684<tr>
3685<th class="tableblock halign-left valign-top">Detected Version Number</th>
3686<th class="tableblock halign-left valign-top">Standard Year</th>
3687<th class="tableblock halign-left valign-top">C++ Standard</th>
3688</tr>
3689</thead>
3690<tbody>
3691<tr>
3692<td class="tableblock halign-left valign-top"><p class="tableblock">27.11.1</p></td>
3693<td class="tableblock halign-left valign-top"><p class="tableblock">1998</p></td>
3694<td class="tableblock halign-left valign-top"><p class="tableblock">ISO/IEC 14882:1998</p></td>
3695</tr>
3696<tr>
3697<td class="tableblock halign-left valign-top"><p class="tableblock">41.3.1</p></td>
3698<td class="tableblock halign-left valign-top"><p class="tableblock">2011</p></td>
3699<td class="tableblock halign-left valign-top"><p class="tableblock">ISO/IEC 14882:2011</p></td>
3700</tr>
3701<tr>
3702<td class="tableblock halign-left valign-top"><p class="tableblock">44.2.1</p></td>
3703<td class="tableblock halign-left valign-top"><p class="tableblock">2014</p></td>
3704<td class="tableblock halign-left valign-top"><p class="tableblock">ISO/IEC 14882:2014</p></td>
3705</tr>
3706<tr>
3707<td class="tableblock halign-left valign-top"><p class="tableblock">47.3.1</p></td>
3708<td class="tableblock halign-left valign-top"><p class="tableblock">2017</p></td>
3709<td class="tableblock halign-left valign-top"><p class="tableblock">ISO/IEC 14882:2017</p></td>
3710</tr>
3711</tbody>
3712</table>
3713<table class="tableblock frame-all grid-all stretch">
3714<colgroup>
3715<col style="width: 50%;">
3716<col style="width: 50%;">
3717</colgroup>
3718<thead>
3719<tr>
3720<th class="tableblock halign-left valign-top">Symbol</th>
3721<th class="tableblock halign-left valign-top">Version</th>
3722</tr>
3723</thead>
3724<tbody>
3725<tr>
3726<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cplusplus</code></p></td>
3727<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3728</tr>
3729<tr>
3730<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cplusplus</code></p></td>
3731<td class="tableblock halign-left valign-top"><p class="tableblock">YYYY.MM.1</p></td>
3732</tr>
3733</tbody>
3734</table>
3735</div>
3736<div class="sect3">
3737<h4 id="_boost_lang_stdcppcli"><a class="anchor" href="#_boost_lang_stdcppcli"></a>4.3.5. <code>BOOST_LANG_STDCPPCLI</code></h4>
3738<div class="paragraph">
3739<p><a href="http://en.wikipedia.org/wiki/C%2B%2B/CLI">Standard C++/CLI</a> language.
3740If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.</p>
3741</div>
3742<table class="tableblock frame-all grid-all stretch">
3743<colgroup>
3744<col style="width: 50%;">
3745<col style="width: 50%;">
3746</colgroup>
3747<thead>
3748<tr>
3749<th class="tableblock halign-left valign-top">Symbol</th>
3750<th class="tableblock halign-left valign-top">Version</th>
3751</tr>
3752</thead>
3753<tbody>
3754<tr>
3755<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cplusplus_cli</code></p></td>
3756<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3757</tr>
3758<tr>
3759<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cplusplus_cli</code></p></td>
3760<td class="tableblock halign-left valign-top"><p class="tableblock">YYYY.MM.1</p></td>
3761</tr>
3762</tbody>
3763</table>
3764</div>
3765<div class="sect3">
3766<h4 id="_boost_lang_stdecpp"><a class="anchor" href="#_boost_lang_stdecpp"></a>4.3.6. <code>BOOST_LANG_STDECPP</code></h4>
3767<div class="paragraph">
3768<p><a href="http://en.wikipedia.org/wiki/Embedded_C%2B%2B">Standard Embedded C++</a> language.</p>
3769</div>
3770<table class="tableblock frame-all grid-all stretch">
3771<colgroup>
3772<col style="width: 50%;">
3773<col style="width: 50%;">
3774</colgroup>
3775<thead>
3776<tr>
3777<th class="tableblock halign-left valign-top">Symbol</th>
3778<th class="tableblock halign-left valign-top">Version</th>
3779</tr>
3780</thead>
3781<tbody>
3782<tr>
3783<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__embedded_cplusplus</code></p></td>
3784<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3785</tr>
3786</tbody>
3787</table>
3788</div>
3789</div>
3790<div class="sect2">
3791<h3 id="_boost_lib_library_macros"><a class="anchor" href="#_boost_lib_library_macros"></a>4.4. <code>BOOST_LIB</code> library macros</h3>
3792<div class="sect3">
3793<h4 id="_boost_lib_c_cloudabi"><a class="anchor" href="#_boost_lib_c_cloudabi"></a>4.4.1. <code>BOOST_LIB_C_CLOUDABI</code></h4>
3794<div class="paragraph">
3795<p><a href="https://github.com/NuxiNL/cloudlibc">cloudlibc</a> - CloudABI&#8217;s standard C library.
3796Version number available as major, and minor.</p>
3797</div>
3798<table class="tableblock frame-all grid-all stretch">
3799<colgroup>
3800<col style="width: 50%;">
3801<col style="width: 50%;">
3802</colgroup>
3803<thead>
3804<tr>
3805<th class="tableblock halign-left valign-top">Symbol</th>
3806<th class="tableblock halign-left valign-top">Version</th>
3807</tr>
3808</thead>
3809<tbody>
3810<tr>
3811<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cloudlibc__</code></p></td>
3812<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3813</tr>
3814<tr>
3815<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__cloudlibc_major__</code>, <code>__cloudlibc_minor__</code></p></td>
3816<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
3817</tr>
3818</tbody>
3819</table>
3820</div>
3821<div class="sect3">
3822<h4 id="_boost_lib_c_gnu"><a class="anchor" href="#_boost_lib_c_gnu"></a>4.4.2. <code>BOOST_LIB_C_GNU</code></h4>
3823<div class="paragraph">
3824<p><a href="http://en.wikipedia.org/wiki/Glibc">GNU glibc</a> Standard C library.
3825Version number available as major, and minor.</p>
3826</div>
3827<table class="tableblock frame-all grid-all stretch">
3828<colgroup>
3829<col style="width: 50%;">
3830<col style="width: 50%;">
3831</colgroup>
3832<thead>
3833<tr>
3834<th class="tableblock halign-left valign-top">Symbol</th>
3835<th class="tableblock halign-left valign-top">Version</th>
3836</tr>
3837</thead>
3838<tbody>
3839<tr>
3840<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBC__</code></p></td>
3841<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3842</tr>
3843<tr>
3844<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GNU_LIBRARY__</code></p></td>
3845<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3846</tr>
3847<tr>
3848<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBC__</code>, <code>__GLIBC_MINOR__</code></p></td>
3849<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
3850</tr>
3851<tr>
3852<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GNU_LIBRARY__</code>, <code>__GNU_LIBRARY_MINOR__</code></p></td>
3853<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
3854</tr>
3855</tbody>
3856</table>
3857</div>
3858<div class="sect3">
3859<h4 id="_boost_lib_c_uc"><a class="anchor" href="#_boost_lib_c_uc"></a>4.4.3. <code>BOOST_LIB_C_UC</code></h4>
3860<div class="paragraph">
3861<p><a href="http://en.wikipedia.org/wiki/Uclibc">uClibc</a> Standard C library.</p>
3862</div>
3863<table class="tableblock frame-all grid-all stretch">
3864<colgroup>
3865<col style="width: 50%;">
3866<col style="width: 50%;">
3867</colgroup>
3868<thead>
3869<tr>
3870<th class="tableblock halign-left valign-top">Symbol</th>
3871<th class="tableblock halign-left valign-top">Version</th>
3872</tr>
3873</thead>
3874<tbody>
3875<tr>
3876<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__UCLIBC__</code></p></td>
3877<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3878</tr>
3879<tr>
3880<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__UCLIBC_MAJOR__</code>, <code>__UCLIBC_MINOR__</code>, <code>__UCLIBC_SUBLEVEL__</code></p></td>
3881<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3882</tr>
3883</tbody>
3884</table>
3885</div>
3886<div class="sect3">
3887<h4 id="_boost_lib_c_vms"><a class="anchor" href="#_boost_lib_c_vms"></a>4.4.4. <code>BOOST_LIB_C_VMS</code></h4>
3888<div class="paragraph">
3889<p>VMS libc Standard C library.
3890Version number available as major, minor, and patch.</p>
3891</div>
3892<table class="tableblock frame-all grid-all stretch">
3893<colgroup>
3894<col style="width: 50%;">
3895<col style="width: 50%;">
3896</colgroup>
3897<thead>
3898<tr>
3899<th class="tableblock halign-left valign-top">Symbol</th>
3900<th class="tableblock halign-left valign-top">Version</th>
3901</tr>
3902</thead>
3903<tbody>
3904<tr>
3905<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CRTL_VER</code></p></td>
3906<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3907</tr>
3908<tr>
3909<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CRTL_VER</code></p></td>
3910<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3911</tr>
3912</tbody>
3913</table>
3914</div>
3915<div class="sect3">
3916<h4 id="_boost_lib_c_zos"><a class="anchor" href="#_boost_lib_c_zos"></a>4.4.5. <code>BOOST_LIB_C_ZOS</code></h4>
3917<div class="paragraph">
3918<p>z/OS libc Standard C library.
3919Version number available as major, minor, and patch.</p>
3920</div>
3921<table class="tableblock frame-all grid-all stretch">
3922<colgroup>
3923<col style="width: 50%;">
3924<col style="width: 50%;">
3925</colgroup>
3926<thead>
3927<tr>
3928<th class="tableblock halign-left valign-top">Symbol</th>
3929<th class="tableblock halign-left valign-top">Version</th>
3930</tr>
3931</thead>
3932<tbody>
3933<tr>
3934<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__LIBREL__</code></p></td>
3935<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3936</tr>
3937<tr>
3938<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__LIBREL__</code></p></td>
3939<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3940</tr>
3941<tr>
3942<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TARGET_LIB__</code></p></td>
3943<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
3944</tr>
3945</tbody>
3946</table>
3947</div>
3948<div class="sect3">
3949<h4 id="_boost_lib_std_cxx"><a class="anchor" href="#_boost_lib_std_cxx"></a>4.4.6. <code>BOOST_LIB_STD_CXX</code></h4>
3950<div class="paragraph">
3951<p><a href="http://libcxx.llvm.org/">libc++</a> C++ Standard Library.</p>
3952</div>
3953<table class="tableblock frame-all grid-all stretch">
3954<colgroup>
3955<col style="width: 50%;">
3956<col style="width: 50%;">
3957</colgroup>
3958<thead>
3959<tr>
3960<th class="tableblock halign-left valign-top">Symbol</th>
3961<th class="tableblock halign-left valign-top">Version</th>
3962</tr>
3963</thead>
3964<tbody>
3965<tr>
3966<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_LIBCPP_VERSION</code></p></td>
3967<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3968</tr>
3969<tr>
3970<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_LIBCPP_VERSION</code></p></td>
3971<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.P</p></td>
3972</tr>
3973</tbody>
3974</table>
3975</div>
3976<div class="sect3">
3977<h4 id="_boost_lib_std_dinkumware"><a class="anchor" href="#_boost_lib_std_dinkumware"></a>4.4.7. <code>BOOST_LIB_STD_DINKUMWARE</code></h4>
3978<div class="paragraph">
3979<p><a href="http://en.wikipedia.org/wiki/Dinkumware">Dinkumware</a> Standard C++ Library.
3980If available version number as major, minor, and patch.</p>
3981</div>
3982<table class="tableblock frame-all grid-all stretch">
3983<colgroup>
3984<col style="width: 50%;">
3985<col style="width: 50%;">
3986</colgroup>
3987<thead>
3988<tr>
3989<th class="tableblock halign-left valign-top">Symbol</th>
3990<th class="tableblock halign-left valign-top">Version</th>
3991</tr>
3992</thead>
3993<tbody>
3994<tr>
3995<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_YVALS</code>, <code>__IBMCPP__</code></p></td>
3996<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
3997</tr>
3998<tr>
3999<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_CPPLIB_VER</code></p></td>
4000<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4001</tr>
4002<tr>
4003<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_CPPLIB_VER</code></p></td>
4004<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
4005</tr>
4006</tbody>
4007</table>
4008</div>
4009<div class="sect3">
4010<h4 id="_boost_lib_std_como"><a class="anchor" href="#_boost_lib_std_como"></a>4.4.8. <code>BOOST_LIB_STD_COMO</code></h4>
4011<div class="paragraph">
4012<p><a href="http://www.comeaucomputing.com/libcomo/">Comeau Computing</a> Standard C++ Library.
4013Version number available as major.</p>
4014</div>
4015<table class="tableblock frame-all grid-all stretch">
4016<colgroup>
4017<col style="width: 50%;">
4018<col style="width: 50%;">
4019</colgroup>
4020<thead>
4021<tr>
4022<th class="tableblock halign-left valign-top">Symbol</th>
4023<th class="tableblock halign-left valign-top">Version</th>
4024</tr>
4025</thead>
4026<tbody>
4027<tr>
4028<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__LIBCOMO__</code></p></td>
4029<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4030</tr>
4031<tr>
4032<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__LIBCOMO_VERSION__</code></p></td>
4033<td class="tableblock halign-left valign-top"><p class="tableblock">V.0.0</p></td>
4034</tr>
4035</tbody>
4036</table>
4037</div>
4038<div class="sect3">
4039<h4 id="_boost_lib_std_msipl"><a class="anchor" href="#_boost_lib_std_msipl"></a>4.4.9. <code>BOOST_LIB_STD_MSIPL</code></h4>
4040<div class="paragraph">
4041<p><a href="http://modena.us/">Modena Software Lib++</a> Standard C++ Library.</p>
4042</div>
4043<table class="tableblock frame-all grid-all stretch">
4044<colgroup>
4045<col style="width: 50%;">
4046<col style="width: 50%;">
4047</colgroup>
4048<thead>
4049<tr>
4050<th class="tableblock halign-left valign-top">Symbol</th>
4051<th class="tableblock halign-left valign-top">Version</th>
4052</tr>
4053</thead>
4054<tbody>
4055<tr>
4056<td class="tableblock halign-left valign-top"><p class="tableblock"><code>MSIPL_COMPILE_H</code></p></td>
4057<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4058</tr>
4059<tr>
4060<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MSIPL_COMPILE_H</code></p></td>
4061<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4062</tr>
4063</tbody>
4064</table>
4065</div>
4066<div class="sect3">
4067<h4 id="_boost_lib_std_msl"><a class="anchor" href="#_boost_lib_std_msl"></a>4.4.10. <code>BOOST_LIB_STD_MSL</code></h4>
4068<div class="paragraph">
4069<p><a href="http://www.freescale.com/">Metrowerks</a> Standard C++ Library.
4070Version number available as major, minor, and patch.</p>
4071</div>
4072<table class="tableblock frame-all grid-all stretch">
4073<colgroup>
4074<col style="width: 50%;">
4075<col style="width: 50%;">
4076</colgroup>
4077<thead>
4078<tr>
4079<th class="tableblock halign-left valign-top">Symbol</th>
4080<th class="tableblock halign-left valign-top">Version</th>
4081</tr>
4082</thead>
4083<tbody>
4084<tr>
4085<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MSL_CPP__</code></p></td>
4086<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4087</tr>
4088<tr>
4089<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MSL__</code></p></td>
4090<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4091</tr>
4092<tr>
4093<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MSL_CPP__</code></p></td>
4094<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4095</tr>
4096<tr>
4097<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MSL__</code></p></td>
4098<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4099</tr>
4100</tbody>
4101</table>
4102</div>
4103<div class="sect3">
4104<h4 id="_boost_lib_std_rw"><a class="anchor" href="#_boost_lib_std_rw"></a>4.4.11. <code>BOOST_LIB_STD_RW</code></h4>
4105<div class="paragraph">
4106<p><a href="http://stdcxx.apache.org/">Roguewave</a> Standard C++ library.
4107If available version number as major, minor, and patch.</p>
4108</div>
4109<table class="tableblock frame-all grid-all stretch">
4110<colgroup>
4111<col style="width: 50%;">
4112<col style="width: 50%;">
4113</colgroup>
4114<thead>
4115<tr>
4116<th class="tableblock halign-left valign-top">Symbol</th>
4117<th class="tableblock halign-left valign-top">Version</th>
4118</tr>
4119</thead>
4120<tbody>
4121<tr>
4122<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__STD_RWCOMPILER_H__</code></p></td>
4123<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4124</tr>
4125<tr>
4126<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_RWSTD_VER</code></p></td>
4127<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4128</tr>
4129<tr>
4130<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_RWSTD_VER</code></p></td>
4131<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4132</tr>
4133</tbody>
4134</table>
4135</div>
4136<div class="sect3">
4137<h4 id="_boost_lib_std_sgi"><a class="anchor" href="#_boost_lib_std_sgi"></a>4.4.12. <code>BOOST_LIB_STD_SGI</code></h4>
4138<div class="paragraph">
4139<p><a href="http://www.sgi.com/tech/stl/">SGI</a> Standard C++ library.
4140If available version number as major, minor, and patch.</p>
4141</div>
4142<table class="tableblock frame-all grid-all stretch">
4143<colgroup>
4144<col style="width: 50%;">
4145<col style="width: 50%;">
4146</colgroup>
4147<thead>
4148<tr>
4149<th class="tableblock halign-left valign-top">Symbol</th>
4150<th class="tableblock halign-left valign-top">Version</th>
4151</tr>
4152</thead>
4153<tbody>
4154<tr>
4155<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__STL_CONFIG_H</code></p></td>
4156<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4157</tr>
4158<tr>
4159<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SGI_STL</code></p></td>
4160<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4161</tr>
4162</tbody>
4163</table>
4164</div>
4165<div class="sect3">
4166<h4 id="_boost_lib_std_gnu"><a class="anchor" href="#_boost_lib_std_gnu"></a>4.4.13. <code>BOOST_LIB_STD_GNU</code></h4>
4167<div class="paragraph">
4168<p><a href="http://gcc.gnu.org/libstdc/[GNU libstdc" class="bare">http://gcc.gnu.org/libstdc/[GNU libstdc</a>] Standard C++ library.
4169Version number available as year (from 1970), month, and day.</p>
4170</div>
4171<table class="tableblock frame-all grid-all stretch">
4172<colgroup>
4173<col style="width: 50%;">
4174<col style="width: 50%;">
4175</colgroup>
4176<thead>
4177<tr>
4178<th class="tableblock halign-left valign-top">Symbol</th>
4179<th class="tableblock halign-left valign-top">Version</th>
4180</tr>
4181</thead>
4182<tbody>
4183<tr>
4184<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBCXX__</code></p></td>
4185<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4186</tr>
4187<tr>
4188<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBCPP__</code></p></td>
4189<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4190</tr>
4191<tr>
4192<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBCXX__</code></p></td>
4193<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4194</tr>
4195<tr>
4196<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__GLIBCPP__</code></p></td>
4197<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4198</tr>
4199</tbody>
4200</table>
4201</div>
4202<div class="sect3">
4203<h4 id="_boost_lib_std_stlport"><a class="anchor" href="#_boost_lib_std_stlport"></a>4.4.14. <code>BOOST_LIB_STD_STLPORT</code></h4>
4204<div class="paragraph">
4205<p><a href="http://sourceforge.net/projects/stlport/">STLport Standard C++</a> library.
4206Version number available as major, minor, and patch.</p>
4207</div>
4208<table class="tableblock frame-all grid-all stretch">
4209<colgroup>
4210<col style="width: 50%;">
4211<col style="width: 50%;">
4212</colgroup>
4213<thead>
4214<tr>
4215<th class="tableblock halign-left valign-top">Symbol</th>
4216<th class="tableblock halign-left valign-top">Version</th>
4217</tr>
4218</thead>
4219<tbody>
4220<tr>
4221<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SGI_STL_PORT</code></p></td>
4222<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4223</tr>
4224<tr>
4225<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_STLPORT_VERSION</code></p></td>
4226<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4227</tr>
4228<tr>
4229<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_STLPORT_MAJOR</code>, <code>_STLPORT_MINOR</code>, <code>_STLPORT_PATCHLEVEL</code></p></td>
4230<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4231</tr>
4232<tr>
4233<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_STLPORT_VERSION</code></p></td>
4234<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4235</tr>
4236<tr>
4237<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SGI_STL_PORT</code></p></td>
4238<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4239</tr>
4240</tbody>
4241</table>
4242</div>
4243<div class="sect3">
4244<h4 id="_boost_lib_std_ibm"><a class="anchor" href="#_boost_lib_std_ibm"></a>4.4.15. <code>BOOST_LIB_STD_IBM</code></h4>
4245<div class="paragraph">
4246<p><a href="http://www.ibm.com/software/awdtools/xlcpp/">IBM VACPP Standard C++</a> library.</p>
4247</div>
4248<table class="tableblock frame-all grid-all stretch">
4249<colgroup>
4250<col style="width: 50%;">
4251<col style="width: 50%;">
4252</colgroup>
4253<thead>
4254<tr>
4255<th class="tableblock halign-left valign-top">Symbol</th>
4256<th class="tableblock halign-left valign-top">Version</th>
4257</tr>
4258</thead>
4259<tbody>
4260<tr>
4261<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__IBMCPP__</code></p></td>
4262<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4263</tr>
4264</tbody>
4265</table>
4266</div>
4267</div>
4268<div class="sect2">
4269<h3 id="_boost_os_operating_system_macros"><a class="anchor" href="#_boost_os_operating_system_macros"></a>4.5. <code>BOOST_OS</code> operating system macros</h3>
4270<div class="sect3">
4271<h4 id="_boost_os_aix"><a class="anchor" href="#_boost_os_aix"></a>4.5.1. <code>BOOST_OS_AIX</code></h4>
4272<div class="paragraph">
4273<p><a href="http://en.wikipedia.org/wiki/AIX_operating_system">IBM AIX</a> operating system.
4274Version number available as major, minor, and patch.</p>
4275</div>
4276<table class="tableblock frame-all grid-all stretch">
4277<colgroup>
4278<col style="width: 50%;">
4279<col style="width: 50%;">
4280</colgroup>
4281<thead>
4282<tr>
4283<th class="tableblock halign-left valign-top">Symbol</th>
4284<th class="tableblock halign-left valign-top">Version</th>
4285</tr>
4286</thead>
4287<tbody>
4288<tr>
4289<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_AIX</code></p></td>
4290<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4291</tr>
4292<tr>
4293<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TOS_AIX__</code></p></td>
4294<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4295</tr>
4296<tr>
4297<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_AIX43</code></p></td>
4298<td class="tableblock halign-left valign-top"><p class="tableblock">4.3.0</p></td>
4299</tr>
4300<tr>
4301<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_AIX41</code></p></td>
4302<td class="tableblock halign-left valign-top"><p class="tableblock">4.1.0</p></td>
4303</tr>
4304<tr>
4305<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_AIX32</code></p></td>
4306<td class="tableblock halign-left valign-top"><p class="tableblock">3.2.0</p></td>
4307</tr>
4308<tr>
4309<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_AIX3</code></p></td>
4310<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
4311</tr>
4312</tbody>
4313</table>
4314</div>
4315<div class="sect3">
4316<h4 id="_boost_os_amigaos"><a class="anchor" href="#_boost_os_amigaos"></a>4.5.2. <code>BOOST_OS_AMIGAOS</code></h4>
4317<div class="paragraph">
4318<p><a href="http://en.wikipedia.org/wiki/AmigaOS">AmigaOS</a> operating system.</p>
4319</div>
4320<table class="tableblock frame-all grid-all stretch">
4321<colgroup>
4322<col style="width: 50%;">
4323<col style="width: 50%;">
4324</colgroup>
4325<thead>
4326<tr>
4327<th class="tableblock halign-left valign-top">Symbol</th>
4328<th class="tableblock halign-left valign-top">Version</th>
4329</tr>
4330</thead>
4331<tbody>
4332<tr>
4333<td class="tableblock halign-left valign-top"><p class="tableblock"><code>AMIGA</code></p></td>
4334<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4335</tr>
4336<tr>
4337<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__amigaos__</code></p></td>
4338<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4339</tr>
4340</tbody>
4341</table>
4342</div>
4343<div class="sect3">
4344<h4 id="_boost_os_beos"><a class="anchor" href="#_boost_os_beos"></a>4.5.3. <code>BOOST_OS_BEOS</code></h4>
4345<div class="paragraph">
4346<p><a href="http://en.wikipedia.org/wiki/BeOS">BeOS</a> operating system.</p>
4347</div>
4348<table class="tableblock frame-all grid-all stretch">
4349<colgroup>
4350<col style="width: 50%;">
4351<col style="width: 50%;">
4352</colgroup>
4353<thead>
4354<tr>
4355<th class="tableblock halign-left valign-top">Symbol</th>
4356<th class="tableblock halign-left valign-top">Version</th>
4357</tr>
4358</thead>
4359<tbody>
4360<tr>
4361<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__BEOS__</code></p></td>
4362<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4363</tr>
4364</tbody>
4365</table>
4366</div>
4367<div class="sect3">
4368<h4 id="_boost_os_bsd"><a class="anchor" href="#_boost_os_bsd"></a>4.5.4. <code>BOOST_OS_BSD</code></h4>
4369<div class="paragraph">
4370<p><a href="http://en.wikipedia.org/wiki/Berkeley_Software_Distribution">BSD</a> operating system.</p>
4371</div>
4372<div class="paragraph">
4373<p>BSD has various branch operating systems possible and each detected
4374individually. This detects the following variations and sets a specific
4375version number macro to match:</p>
4376</div>
4377<div class="ulist">
4378<ul>
4379<li>
4380<p><code>BOOST_OS_BSD_DRAGONFLY</code> <a href="http://en.wikipedia.org/wiki/DragonFly_BSD">DragonFly BSD</a></p>
4381</li>
4382<li>
4383<p><code>BOOST_OS_BSD_FREE</code> <a href="http://en.wikipedia.org/wiki/Freebsd">FreeBSD</a></p>
4384</li>
4385<li>
4386<p><code>BOOST_OS_BSD_BSDI</code> <a href="http://en.wikipedia.org/wiki/BSD/OS">BSDi BSD/OS</a></p>
4387</li>
4388<li>
4389<p><code>BOOST_OS_BSD_NET</code> <a href="http://en.wikipedia.org/wiki/Netbsd">NetBSD</a></p>
4390</li>
4391<li>
4392<p><code>BOOST_OS_BSD_OPEN</code> <a href="http://en.wikipedia.org/wiki/Openbsd">OpenBSD</a></p>
4393</li>
4394</ul>
4395</div>
4396<div class="admonitionblock note">
4397<table>
4398<tr>
4399<td class="icon">
4400<div class="title">ℹ</div>
4401</td>
4402<td class="content">
4403The general <code>BOOST_OS_BSD</code> is set in all cases to indicate some form
4404of BSD. If the above variants is detected the corresponding macro is also set.
4405</td>
4406</tr>
4407</table>
4408</div>
4409<table class="tableblock frame-all grid-all stretch">
4410<colgroup>
4411<col style="width: 50%;">
4412<col style="width: 50%;">
4413</colgroup>
4414<thead>
4415<tr>
4416<th class="tableblock halign-left valign-top">Symbol</th>
4417<th class="tableblock halign-left valign-top">Version</th>
4418</tr>
4419</thead>
4420<tbody>
4421<tr>
4422<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BSD</code></p></td>
4423<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4424</tr>
4425<tr>
4426<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_SYSTYPE_BSD</code></p></td>
4427<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4428</tr>
4429<tr>
4430<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BSD4_2</code></p></td>
4431<td class="tableblock halign-left valign-top"><p class="tableblock">4.2.0</p></td>
4432</tr>
4433<tr>
4434<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BSD4_3</code></p></td>
4435<td class="tableblock halign-left valign-top"><p class="tableblock">4.3.0</p></td>
4436</tr>
4437<tr>
4438<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BSD4_4</code></p></td>
4439<td class="tableblock halign-left valign-top"><p class="tableblock">4.4.0</p></td>
4440</tr>
4441<tr>
4442<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BSD</code></p></td>
4443<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
4444</tr>
4445</tbody>
4446</table>
4447</div>
4448<div class="sect3">
4449<h4 id="_boost_os_cygwin"><a class="anchor" href="#_boost_os_cygwin"></a>4.5.5. <code>BOOST_OS_CYGWIN</code></h4>
4450<div class="paragraph">
4451<p><a href="http://en.wikipedia.org/wiki/Cygwin">Cygwin</a> evironment.</p>
4452</div>
4453<table class="tableblock frame-all grid-all stretch">
4454<colgroup>
4455<col style="width: 50%;">
4456<col style="width: 50%;">
4457</colgroup>
4458<thead>
4459<tr>
4460<th class="tableblock halign-left valign-top">Symbol</th>
4461<th class="tableblock halign-left valign-top">Version</th>
4462</tr>
4463</thead>
4464<tbody>
4465<tr>
4466<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CYGWIN__</code></p></td>
4467<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4468</tr>
4469<tr>
4470<td class="tableblock halign-left valign-top"><p class="tableblock"><code>CYGWIN_VERSION_API_MAJOR</code>, <code>CYGWIN_VERSION_API_MINOR</code></p></td>
4471<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
4472</tr>
4473</tbody>
4474</table>
4475</div>
4476<div class="sect3">
4477<h4 id="_boost_os_haiku"><a class="anchor" href="#_boost_os_haiku"></a>4.5.6. <code>BOOST_OS_HAIKU</code></h4>
4478<div class="paragraph">
4479<p><a href="http://en.wikipedia.org/wiki/Haiku_(operating_system)">Haiku</a> operating system.</p>
4480</div>
4481<table class="tableblock frame-all grid-all stretch">
4482<colgroup>
4483<col style="width: 50%;">
4484<col style="width: 50%;">
4485</colgroup>
4486<thead>
4487<tr>
4488<th class="tableblock halign-left valign-top">Symbol</th>
4489<th class="tableblock halign-left valign-top">Version</th>
4490</tr>
4491</thead>
4492<tbody>
4493<tr>
4494<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__HAIKU__</code></p></td>
4495<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4496</tr>
4497</tbody>
4498</table>
4499</div>
4500<div class="sect3">
4501<h4 id="_boost_os_hpux"><a class="anchor" href="#_boost_os_hpux"></a>4.5.7. <code>BOOST_OS_HPUX</code></h4>
4502<div class="paragraph">
4503<p><a href="http://en.wikipedia.org/wiki/HP-UX">HP-UX</a> operating system.</p>
4504</div>
4505<table class="tableblock frame-all grid-all stretch">
4506<colgroup>
4507<col style="width: 50%;">
4508<col style="width: 50%;">
4509</colgroup>
4510<thead>
4511<tr>
4512<th class="tableblock halign-left valign-top">Symbol</th>
4513<th class="tableblock halign-left valign-top">Version</th>
4514</tr>
4515</thead>
4516<tbody>
4517<tr>
4518<td class="tableblock halign-left valign-top"><p class="tableblock"><code>hpux</code></p></td>
4519<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4520</tr>
4521<tr>
4522<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_hpux</code></p></td>
4523<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4524</tr>
4525<tr>
4526<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__hpux</code></p></td>
4527<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4528</tr>
4529</tbody>
4530</table>
4531</div>
4532<div class="sect3">
4533<h4 id="_boost_os_ios"><a class="anchor" href="#_boost_os_ios"></a>4.5.8. <code>BOOST_OS_IOS</code></h4>
4534<div class="paragraph">
4535<p><a href="http://en.wikipedia.org/wiki/iOS">iOS</a> operating system.</p>
4536</div>
4537<table class="tableblock frame-all grid-all stretch">
4538<colgroup>
4539<col style="width: 50%;">
4540<col style="width: 50%;">
4541</colgroup>
4542<thead>
4543<tr>
4544<th class="tableblock halign-left valign-top">Symbol</th>
4545<th class="tableblock halign-left valign-top">Version</th>
4546</tr>
4547</thead>
4548<tbody>
4549<tr>
4550<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__APPLE__</code></p></td>
4551<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4552</tr>
4553<tr>
4554<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MACH__</code></p></td>
4555<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4556</tr>
4557<tr>
4558<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__</code></p></td>
4559<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4560</tr>
4561<tr>
4562<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__</code></p></td>
4563<td class="tableblock halign-left valign-top"><p class="tableblock">__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000</p></td>
4564</tr>
4565</tbody>
4566</table>
4567</div>
4568<div class="sect3">
4569<h4 id="_boost_os_irix"><a class="anchor" href="#_boost_os_irix"></a>4.5.9. <code>BOOST_OS_IRIX</code></h4>
4570<div class="paragraph">
4571<p><a href="http://en.wikipedia.org/wiki/Irix">IRIX</a> operating system.</p>
4572</div>
4573<table class="tableblock frame-all grid-all stretch">
4574<colgroup>
4575<col style="width: 50%;">
4576<col style="width: 50%;">
4577</colgroup>
4578<thead>
4579<tr>
4580<th class="tableblock halign-left valign-top">Symbol</th>
4581<th class="tableblock halign-left valign-top">Version</th>
4582</tr>
4583</thead>
4584<tbody>
4585<tr>
4586<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sgi</code></p></td>
4587<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4588</tr>
4589<tr>
4590<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sgi</code></p></td>
4591<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4592</tr>
4593</tbody>
4594</table>
4595</div>
4596<div class="sect3">
4597<h4 id="_boost_os_linux"><a class="anchor" href="#_boost_os_linux"></a>4.5.10. <code>BOOST_OS_LINUX</code></h4>
4598<div class="paragraph">
4599<p><a href="http://en.wikipedia.org/wiki/Linux">Linux</a> operating system.</p>
4600</div>
4601<table class="tableblock frame-all grid-all stretch">
4602<colgroup>
4603<col style="width: 50%;">
4604<col style="width: 50%;">
4605</colgroup>
4606<thead>
4607<tr>
4608<th class="tableblock halign-left valign-top">Symbol</th>
4609<th class="tableblock halign-left valign-top">Version</th>
4610</tr>
4611</thead>
4612<tbody>
4613<tr>
4614<td class="tableblock halign-left valign-top"><p class="tableblock"><code>linux</code></p></td>
4615<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4616</tr>
4617<tr>
4618<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__linux</code></p></td>
4619<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4620</tr>
4621<tr>
4622<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__linux__</code></p></td>
4623<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4624</tr>
4625<tr>
4626<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__gnu_linux__</code></p></td>
4627<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4628</tr>
4629</tbody>
4630</table>
4631</div>
4632<div class="sect3">
4633<h4 id="_boost_os_macos"><a class="anchor" href="#_boost_os_macos"></a>4.5.11. <code>BOOST_OS_MACOS</code></h4>
4634<div class="paragraph">
4635<p><a href="http://en.wikipedia.org/wiki/Mac_OS">Mac OS</a> operating system.</p>
4636</div>
4637<table class="tableblock frame-all grid-all stretch">
4638<colgroup>
4639<col style="width: 50%;">
4640<col style="width: 50%;">
4641</colgroup>
4642<thead>
4643<tr>
4644<th class="tableblock halign-left valign-top">Symbol</th>
4645<th class="tableblock halign-left valign-top">Version</th>
4646</tr>
4647</thead>
4648<tbody>
4649<tr>
4650<td class="tableblock halign-left valign-top"><p class="tableblock"><code>macintosh</code></p></td>
4651<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4652</tr>
4653<tr>
4654<td class="tableblock halign-left valign-top"><p class="tableblock"><code>Macintosh</code></p></td>
4655<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4656</tr>
4657<tr>
4658<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__APPLE__</code></p></td>
4659<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4660</tr>
4661<tr>
4662<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MACH__</code></p></td>
4663<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4664</tr>
4665<tr>
4666<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__APPLE__</code>, <code>__MACH__</code></p></td>
4667<td class="tableblock halign-left valign-top"><p class="tableblock">10.0.0</p></td>
4668</tr>
4669<tr>
4670<td class="tableblock halign-left valign-top"><p class="tableblock"><code><em>otherwise</em></code></p></td>
4671<td class="tableblock halign-left valign-top"><p class="tableblock">9.0.0</p></td>
4672</tr>
4673</tbody>
4674</table>
4675</div>
4676<div class="sect3">
4677<h4 id="_boost_os_os400"><a class="anchor" href="#_boost_os_os400"></a>4.5.12. <code>BOOST_OS_OS400</code></h4>
4678<div class="paragraph">
4679<p><a href="http://en.wikipedia.org/wiki/IBM_i">IBM OS/400</a> operating system.</p>
4680</div>
4681<table class="tableblock frame-all grid-all stretch">
4682<colgroup>
4683<col style="width: 50%;">
4684<col style="width: 50%;">
4685</colgroup>
4686<thead>
4687<tr>
4688<th class="tableblock halign-left valign-top">Symbol</th>
4689<th class="tableblock halign-left valign-top">Version</th>
4690</tr>
4691</thead>
4692<tbody>
4693<tr>
4694<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__OS400__</code></p></td>
4695<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4696</tr>
4697</tbody>
4698</table>
4699</div>
4700<div class="sect3">
4701<h4 id="_boost_os_qnx"><a class="anchor" href="#_boost_os_qnx"></a>4.5.13. <code>BOOST_OS_QNX</code></h4>
4702<div class="paragraph">
4703<p><a href="http://en.wikipedia.org/wiki/QNX">QNX</a> operating system.
4704Version number available as major, and minor if possible. And
4705version 4 is specifically detected.</p>
4706</div>
4707<table class="tableblock frame-all grid-all stretch">
4708<colgroup>
4709<col style="width: 50%;">
4710<col style="width: 50%;">
4711</colgroup>
4712<thead>
4713<tr>
4714<th class="tableblock halign-left valign-top">Symbol</th>
4715<th class="tableblock halign-left valign-top">Version</th>
4716</tr>
4717</thead>
4718<tbody>
4719<tr>
4720<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__QNX__</code></p></td>
4721<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4722</tr>
4723<tr>
4724<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__QNXNTO__</code></p></td>
4725<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4726</tr>
4727<tr>
4728<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_NTO_VERSION</code></p></td>
4729<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
4730</tr>
4731<tr>
4732<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__QNX__</code></p></td>
4733<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
4734</tr>
4735</tbody>
4736</table>
4737</div>
4738<div class="sect3">
4739<h4 id="_boost_os_solaris"><a class="anchor" href="#_boost_os_solaris"></a>4.5.14. <code>BOOST_OS_SOLARIS</code></h4>
4740<div class="paragraph">
4741<p><a href="http://en.wikipedia.org/wiki/Solaris_Operating_Environment">Solaris</a> operating system.</p>
4742</div>
4743<table class="tableblock frame-all grid-all stretch">
4744<colgroup>
4745<col style="width: 50%;">
4746<col style="width: 50%;">
4747</colgroup>
4748<thead>
4749<tr>
4750<th class="tableblock halign-left valign-top">Symbol</th>
4751<th class="tableblock halign-left valign-top">Version</th>
4752</tr>
4753</thead>
4754<tbody>
4755<tr>
4756<td class="tableblock halign-left valign-top"><p class="tableblock"><code>sun</code></p></td>
4757<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4758</tr>
4759<tr>
4760<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sun</code></p></td>
4761<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4762</tr>
4763</tbody>
4764</table>
4765</div>
4766<div class="sect3">
4767<h4 id="_boost_os_unix"><a class="anchor" href="#_boost_os_unix"></a>4.5.15. <code>BOOST_OS_UNIX</code></h4>
4768<div class="paragraph">
4769<p><a href="http://en.wikipedia.org/wiki/Unix">Unix Environment</a> operating system.</p>
4770</div>
4771<table class="tableblock frame-all grid-all stretch">
4772<colgroup>
4773<col style="width: 50%;">
4774<col style="width: 50%;">
4775</colgroup>
4776<thead>
4777<tr>
4778<th class="tableblock halign-left valign-top">Symbol</th>
4779<th class="tableblock halign-left valign-top">Version</th>
4780</tr>
4781</thead>
4782<tbody>
4783<tr>
4784<td class="tableblock halign-left valign-top"><p class="tableblock"><code>unix</code></p></td>
4785<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4786</tr>
4787<tr>
4788<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__unix</code></p></td>
4789<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4790</tr>
4791<tr>
4792<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_XOPEN_SOURCE</code></p></td>
4793<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4794</tr>
4795<tr>
4796<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_POSIX_SOURCE</code></p></td>
4797<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4798</tr>
4799</tbody>
4800</table>
4801</div>
4802<div class="sect3">
4803<h4 id="_boost_os_svr4"><a class="anchor" href="#_boost_os_svr4"></a>4.5.16. <code>BOOST_OS_SVR4</code></h4>
4804<div class="paragraph">
4805<p><a href="http://en.wikipedia.org/wiki/UNIX_System_V">SVR4 Environment</a> operating system.</p>
4806</div>
4807<table class="tableblock frame-all grid-all stretch">
4808<colgroup>
4809<col style="width: 50%;">
4810<col style="width: 50%;">
4811</colgroup>
4812<thead>
4813<tr>
4814<th class="tableblock halign-left valign-top">Symbol</th>
4815<th class="tableblock halign-left valign-top">Version</th>
4816</tr>
4817</thead>
4818<tbody>
4819<tr>
4820<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__sysv__</code></p></td>
4821<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4822</tr>
4823<tr>
4824<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SVR4</code></p></td>
4825<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4826</tr>
4827<tr>
4828<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__svr4__</code></p></td>
4829<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4830</tr>
4831<tr>
4832<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_SYSTYPE_SVR4</code></p></td>
4833<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4834</tr>
4835</tbody>
4836</table>
4837</div>
4838<div class="sect3">
4839<h4 id="_boost_os_vms"><a class="anchor" href="#_boost_os_vms"></a>4.5.17. <code>BOOST_OS_VMS</code></h4>
4840<div class="paragraph">
4841<p><a href="http://en.wikipedia.org/wiki/Vms">VMS</a> operating system.</p>
4842</div>
4843<table class="tableblock frame-all grid-all stretch">
4844<colgroup>
4845<col style="width: 50%;">
4846<col style="width: 50%;">
4847</colgroup>
4848<thead>
4849<tr>
4850<th class="tableblock halign-left valign-top">Symbol</th>
4851<th class="tableblock halign-left valign-top">Version</th>
4852</tr>
4853</thead>
4854<tbody>
4855<tr>
4856<td class="tableblock halign-left valign-top"><p class="tableblock"><code>VMS</code></p></td>
4857<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4858</tr>
4859<tr>
4860<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VMS</code></p></td>
4861<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4862</tr>
4863<tr>
4864<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VMS_VER</code></p></td>
4865<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4866</tr>
4867</tbody>
4868</table>
4869</div>
4870<div class="sect3">
4871<h4 id="_boost_os_windows"><a class="anchor" href="#_boost_os_windows"></a>4.5.18. <code>BOOST_OS_WINDOWS</code></h4>
4872<div class="paragraph">
4873<p><a href="http://en.wikipedia.org/wiki/Category:Microsoft_Windows">Microsoft Windows</a> operating system.</p>
4874</div>
4875<table class="tableblock frame-all grid-all stretch">
4876<colgroup>
4877<col style="width: 50%;">
4878<col style="width: 50%;">
4879</colgroup>
4880<thead>
4881<tr>
4882<th class="tableblock halign-left valign-top">Symbol</th>
4883<th class="tableblock halign-left valign-top">Version</th>
4884</tr>
4885</thead>
4886<tbody>
4887<tr>
4888<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_WIN32</code></p></td>
4889<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4890</tr>
4891<tr>
4892<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_WIN64</code></p></td>
4893<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4894</tr>
4895<tr>
4896<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__WIN32__</code></p></td>
4897<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4898</tr>
4899<tr>
4900<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__TOS_WIN__</code></p></td>
4901<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4902</tr>
4903<tr>
4904<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__WINDOWS__</code></p></td>
4905<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4906</tr>
4907</tbody>
4908</table>
4909</div>
4910<div class="sect3">
4911<h4 id="_boost_os_bsd_bsdi"><a class="anchor" href="#_boost_os_bsd_bsdi"></a>4.5.19. <code>BOOST_OS_BSD_BSDI</code></h4>
4912<div class="paragraph">
4913<p><a href="http://en.wikipedia.org/wiki/BSD/OS">BSDi BSD/OS</a> operating system.</p>
4914</div>
4915<table class="tableblock frame-all grid-all stretch">
4916<colgroup>
4917<col style="width: 50%;">
4918<col style="width: 50%;">
4919</colgroup>
4920<thead>
4921<tr>
4922<th class="tableblock halign-left valign-top">Symbol</th>
4923<th class="tableblock halign-left valign-top">Version</th>
4924</tr>
4925</thead>
4926<tbody>
4927<tr>
4928<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__bsdi__</code></p></td>
4929<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4930</tr>
4931</tbody>
4932</table>
4933</div>
4934<div class="sect3">
4935<h4 id="_boost_os_bsd_dragonfly"><a class="anchor" href="#_boost_os_bsd_dragonfly"></a>4.5.20. <code>BOOST_OS_BSD_DRAGONFLY</code></h4>
4936<div class="paragraph">
4937<p><a href="http://en.wikipedia.org/wiki/DragonFly_BSD">DragonFly BSD</a> operating system.</p>
4938</div>
4939<table class="tableblock frame-all grid-all stretch">
4940<colgroup>
4941<col style="width: 50%;">
4942<col style="width: 50%;">
4943</colgroup>
4944<thead>
4945<tr>
4946<th class="tableblock halign-left valign-top">Symbol</th>
4947<th class="tableblock halign-left valign-top">Version</th>
4948</tr>
4949</thead>
4950<tbody>
4951<tr>
4952<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__DragonFly__</code></p></td>
4953<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4954</tr>
4955</tbody>
4956</table>
4957</div>
4958<div class="sect3">
4959<h4 id="_boost_os_bsd_free"><a class="anchor" href="#_boost_os_bsd_free"></a>4.5.21. <code>BOOST_OS_BSD_FREE</code></h4>
4960<div class="paragraph">
4961<p><a href="http://en.wikipedia.org/wiki/Freebsd">FreeBSD</a> operating system.</p>
4962</div>
4963<table class="tableblock frame-all grid-all stretch">
4964<colgroup>
4965<col style="width: 50%;">
4966<col style="width: 50%;">
4967</colgroup>
4968<thead>
4969<tr>
4970<th class="tableblock halign-left valign-top">Symbol</th>
4971<th class="tableblock halign-left valign-top">Version</th>
4972</tr>
4973</thead>
4974<tbody>
4975<tr>
4976<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FreeBSD__</code></p></td>
4977<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
4978</tr>
4979<tr>
4980<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FreeBSD_version</code></p></td>
4981<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
4982</tr>
4983</tbody>
4984</table>
4985</div>
4986<div class="sect3">
4987<h4 id="_boost_os_bsd_net"><a class="anchor" href="#_boost_os_bsd_net"></a>4.5.22. <code>BOOST_OS_BSD_NET</code></h4>
4988<div class="paragraph">
4989<p><a href="http://en.wikipedia.org/wiki/Netbsd">NetBSD</a> operating system.</p>
4990</div>
4991<table class="tableblock frame-all grid-all stretch">
4992<colgroup>
4993<col style="width: 50%;">
4994<col style="width: 50%;">
4995</colgroup>
4996<thead>
4997<tr>
4998<th class="tableblock halign-left valign-top">Symbol</th>
4999<th class="tableblock halign-left valign-top">Version</th>
5000</tr>
5001</thead>
5002<tbody>
5003<tr>
5004<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__NETBSD__</code></p></td>
5005<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5006</tr>
5007<tr>
5008<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__NetBSD__</code></p></td>
5009<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5010</tr>
5011<tr>
5012<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__NETBSD_version</code></p></td>
5013<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
5014</tr>
5015<tr>
5016<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NetBSD0_8</code></p></td>
5017<td class="tableblock halign-left valign-top"><p class="tableblock">0.8.0</p></td>
5018</tr>
5019<tr>
5020<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NetBSD0_9</code></p></td>
5021<td class="tableblock halign-left valign-top"><p class="tableblock">0.9.0</p></td>
5022</tr>
5023<tr>
5024<td class="tableblock halign-left valign-top"><p class="tableblock"><code>NetBSD1_0</code></p></td>
5025<td class="tableblock halign-left valign-top"><p class="tableblock">1.0.0</p></td>
5026</tr>
5027<tr>
5028<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__NetBSD_Version</code></p></td>
5029<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.P</p></td>
5030</tr>
5031</tbody>
5032</table>
5033</div>
5034<div class="sect3">
5035<h4 id="_boost_os_bsd_open"><a class="anchor" href="#_boost_os_bsd_open"></a>4.5.23. <code>BOOST_OS_BSD_OPEN</code></h4>
5036<div class="paragraph">
5037<p><a href="http://en.wikipedia.org/wiki/Openbsd">OpenBSD</a> operating system.</p>
5038</div>
5039<table class="tableblock frame-all grid-all stretch">
5040<colgroup>
5041<col style="width: 50%;">
5042<col style="width: 50%;">
5043</colgroup>
5044<thead>
5045<tr>
5046<th class="tableblock halign-left valign-top">Symbol</th>
5047<th class="tableblock halign-left valign-top">Version</th>
5048</tr>
5049</thead>
5050<tbody>
5051<tr>
5052<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__OpenBSD__</code></p></td>
5053<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5054</tr>
5055<tr>
5056<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_0</code></p></td>
5057<td class="tableblock halign-left valign-top"><p class="tableblock">2.0.0</p></td>
5058</tr>
5059<tr>
5060<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_1</code></p></td>
5061<td class="tableblock halign-left valign-top"><p class="tableblock">2.1.0</p></td>
5062</tr>
5063<tr>
5064<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_2</code></p></td>
5065<td class="tableblock halign-left valign-top"><p class="tableblock">2.2.0</p></td>
5066</tr>
5067<tr>
5068<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_3</code></p></td>
5069<td class="tableblock halign-left valign-top"><p class="tableblock">2.3.0</p></td>
5070</tr>
5071<tr>
5072<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_4</code></p></td>
5073<td class="tableblock halign-left valign-top"><p class="tableblock">2.4.0</p></td>
5074</tr>
5075<tr>
5076<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_5</code></p></td>
5077<td class="tableblock halign-left valign-top"><p class="tableblock">2.5.0</p></td>
5078</tr>
5079<tr>
5080<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_6</code></p></td>
5081<td class="tableblock halign-left valign-top"><p class="tableblock">2.6.0</p></td>
5082</tr>
5083<tr>
5084<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_7</code></p></td>
5085<td class="tableblock halign-left valign-top"><p class="tableblock">2.7.0</p></td>
5086</tr>
5087<tr>
5088<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_8</code></p></td>
5089<td class="tableblock halign-left valign-top"><p class="tableblock">2.8.0</p></td>
5090</tr>
5091<tr>
5092<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD2_9</code></p></td>
5093<td class="tableblock halign-left valign-top"><p class="tableblock">2.9.0</p></td>
5094</tr>
5095<tr>
5096<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_0</code></p></td>
5097<td class="tableblock halign-left valign-top"><p class="tableblock">3.0.0</p></td>
5098</tr>
5099<tr>
5100<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_1</code></p></td>
5101<td class="tableblock halign-left valign-top"><p class="tableblock">3.1.0</p></td>
5102</tr>
5103<tr>
5104<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_2</code></p></td>
5105<td class="tableblock halign-left valign-top"><p class="tableblock">3.2.0</p></td>
5106</tr>
5107<tr>
5108<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_3</code></p></td>
5109<td class="tableblock halign-left valign-top"><p class="tableblock">3.3.0</p></td>
5110</tr>
5111<tr>
5112<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_4</code></p></td>
5113<td class="tableblock halign-left valign-top"><p class="tableblock">3.4.0</p></td>
5114</tr>
5115<tr>
5116<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_5</code></p></td>
5117<td class="tableblock halign-left valign-top"><p class="tableblock">3.5.0</p></td>
5118</tr>
5119<tr>
5120<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_6</code></p></td>
5121<td class="tableblock halign-left valign-top"><p class="tableblock">3.6.0</p></td>
5122</tr>
5123<tr>
5124<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_7</code></p></td>
5125<td class="tableblock halign-left valign-top"><p class="tableblock">3.7.0</p></td>
5126</tr>
5127<tr>
5128<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_8</code></p></td>
5129<td class="tableblock halign-left valign-top"><p class="tableblock">3.8.0</p></td>
5130</tr>
5131<tr>
5132<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD3_9</code></p></td>
5133<td class="tableblock halign-left valign-top"><p class="tableblock">3.9.0</p></td>
5134</tr>
5135<tr>
5136<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_0</code></p></td>
5137<td class="tableblock halign-left valign-top"><p class="tableblock">4.0.0</p></td>
5138</tr>
5139<tr>
5140<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_1</code></p></td>
5141<td class="tableblock halign-left valign-top"><p class="tableblock">4.1.0</p></td>
5142</tr>
5143<tr>
5144<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_2</code></p></td>
5145<td class="tableblock halign-left valign-top"><p class="tableblock">4.2.0</p></td>
5146</tr>
5147<tr>
5148<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_3</code></p></td>
5149<td class="tableblock halign-left valign-top"><p class="tableblock">4.3.0</p></td>
5150</tr>
5151<tr>
5152<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_4</code></p></td>
5153<td class="tableblock halign-left valign-top"><p class="tableblock">4.4.0</p></td>
5154</tr>
5155<tr>
5156<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_5</code></p></td>
5157<td class="tableblock halign-left valign-top"><p class="tableblock">4.5.0</p></td>
5158</tr>
5159<tr>
5160<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_6</code></p></td>
5161<td class="tableblock halign-left valign-top"><p class="tableblock">4.6.0</p></td>
5162</tr>
5163<tr>
5164<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_7</code></p></td>
5165<td class="tableblock halign-left valign-top"><p class="tableblock">4.7.0</p></td>
5166</tr>
5167<tr>
5168<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_8</code></p></td>
5169<td class="tableblock halign-left valign-top"><p class="tableblock">4.8.0</p></td>
5170</tr>
5171<tr>
5172<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD4_9</code></p></td>
5173<td class="tableblock halign-left valign-top"><p class="tableblock">4.9.0</p></td>
5174</tr>
5175<tr>
5176<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_0</code></p></td>
5177<td class="tableblock halign-left valign-top"><p class="tableblock">5.0.0</p></td>
5178</tr>
5179<tr>
5180<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_1</code></p></td>
5181<td class="tableblock halign-left valign-top"><p class="tableblock">5.1.0</p></td>
5182</tr>
5183<tr>
5184<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_2</code></p></td>
5185<td class="tableblock halign-left valign-top"><p class="tableblock">5.2.0</p></td>
5186</tr>
5187<tr>
5188<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_3</code></p></td>
5189<td class="tableblock halign-left valign-top"><p class="tableblock">5.3.0</p></td>
5190</tr>
5191<tr>
5192<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_4</code></p></td>
5193<td class="tableblock halign-left valign-top"><p class="tableblock">5.4.0</p></td>
5194</tr>
5195<tr>
5196<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_5</code></p></td>
5197<td class="tableblock halign-left valign-top"><p class="tableblock">5.5.0</p></td>
5198</tr>
5199<tr>
5200<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_6</code></p></td>
5201<td class="tableblock halign-left valign-top"><p class="tableblock">5.6.0</p></td>
5202</tr>
5203<tr>
5204<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_7</code></p></td>
5205<td class="tableblock halign-left valign-top"><p class="tableblock">5.7.0</p></td>
5206</tr>
5207<tr>
5208<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_8</code></p></td>
5209<td class="tableblock halign-left valign-top"><p class="tableblock">5.8.0</p></td>
5210</tr>
5211<tr>
5212<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD5_9</code></p></td>
5213<td class="tableblock halign-left valign-top"><p class="tableblock">5.9.0</p></td>
5214</tr>
5215<tr>
5216<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_0</code></p></td>
5217<td class="tableblock halign-left valign-top"><p class="tableblock">6.0.0</p></td>
5218</tr>
5219<tr>
5220<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_1</code></p></td>
5221<td class="tableblock halign-left valign-top"><p class="tableblock">6.1.0</p></td>
5222</tr>
5223<tr>
5224<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_2</code></p></td>
5225<td class="tableblock halign-left valign-top"><p class="tableblock">6.2.0</p></td>
5226</tr>
5227<tr>
5228<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_3</code></p></td>
5229<td class="tableblock halign-left valign-top"><p class="tableblock">6.3.0</p></td>
5230</tr>
5231<tr>
5232<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_4</code></p></td>
5233<td class="tableblock halign-left valign-top"><p class="tableblock">6.4.0</p></td>
5234</tr>
5235<tr>
5236<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_5</code></p></td>
5237<td class="tableblock halign-left valign-top"><p class="tableblock">6.5.0</p></td>
5238</tr>
5239<tr>
5240<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_6</code></p></td>
5241<td class="tableblock halign-left valign-top"><p class="tableblock">6.6.0</p></td>
5242</tr>
5243<tr>
5244<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_7</code></p></td>
5245<td class="tableblock halign-left valign-top"><p class="tableblock">6.7.0</p></td>
5246</tr>
5247<tr>
5248<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_8</code></p></td>
5249<td class="tableblock halign-left valign-top"><p class="tableblock">6.8.0</p></td>
5250</tr>
5251<tr>
5252<td class="tableblock halign-left valign-top"><p class="tableblock"><code>OpenBSD6_9</code></p></td>
5253<td class="tableblock halign-left valign-top"><p class="tableblock">6.9.0</p></td>
5254</tr>
5255</tbody>
5256</table>
5257</div>
5258</div>
5259<div class="sect2">
5260<h3 id="_boost_plat_platform_macros"><a class="anchor" href="#_boost_plat_platform_macros"></a>4.6. <code>BOOST_PLAT</code> platform macros</h3>
5261<div class="sect3">
5262<h4 id="_boost_plat_android"><a class="anchor" href="#_boost_plat_android"></a>4.6.1. <code>BOOST_PLAT_ANDROID</code></h4>
5263<div class="paragraph">
5264<p><a href="http://en.wikipedia.org/wiki/Android_%28operating_system%29">Android</a> platform.</p>
5265</div>
5266<table class="tableblock frame-all grid-all stretch">
5267<colgroup>
5268<col style="width: 50%;">
5269<col style="width: 50%;">
5270</colgroup>
5271<thead>
5272<tr>
5273<th class="tableblock halign-left valign-top">Symbol</th>
5274<th class="tableblock halign-left valign-top">Version</th>
5275</tr>
5276</thead>
5277<tbody>
5278<tr>
5279<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ANDROID__</code></p></td>
5280<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5281</tr>
5282</tbody>
5283</table>
5284</div>
5285<div class="sect3">
5286<h4 id="_boost_plat_cloudabi"><a class="anchor" href="#_boost_plat_cloudabi"></a>4.6.2. <code>BOOST_PLAT_CLOUDABI</code></h4>
5287<div class="paragraph">
5288<p><a href="https://github.com/NuxiNL/cloudabi">CloudABI</a> platform.</p>
5289</div>
5290<table class="tableblock frame-all grid-all stretch">
5291<colgroup>
5292<col style="width: 50%;">
5293<col style="width: 50%;">
5294</colgroup>
5295<thead>
5296<tr>
5297<th class="tableblock halign-left valign-top">Symbol</th>
5298<th class="tableblock halign-left valign-top">Version</th>
5299</tr>
5300</thead>
5301<tbody>
5302<tr>
5303<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__CloudABI__</code></p></td>
5304<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5305</tr>
5306</tbody>
5307</table>
5308</div>
5309<div class="sect3">
5310<h4 id="_boost_plat_ios_device"><a class="anchor" href="#_boost_plat_ios_device"></a>4.6.3. <code>BOOST_PLAT_IOS_DEVICE</code></h4>
5311
5312</div>
5313<div class="sect3">
5314<h4 id="_boost_plat_ios_simulator"><a class="anchor" href="#_boost_plat_ios_simulator"></a>4.6.4. <code>BOOST_PLAT_IOS_SIMULATOR</code></h4>
5315<table class="tableblock frame-all grid-all stretch">
5316<colgroup>
5317<col style="width: 50%;">
5318<col style="width: 50%;">
5319</colgroup>
5320<thead>
5321<tr>
5322<th class="tableblock halign-left valign-top">Symbol</th>
5323<th class="tableblock halign-left valign-top">Version</th>
5324</tr>
5325</thead>
5326<tbody>
5327<tr>
5328<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TARGET_IPHONE_SIMULATOR</code></p></td>
5329<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5330</tr>
5331<tr>
5332<td class="tableblock halign-left valign-top"><p class="tableblock"><code>TARGET_OS_SIMULATOR</code></p></td>
5333<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5334</tr>
5335</tbody>
5336</table>
5337</div>
5338<div class="sect3">
5339<h4 id="_boost_plat_mingw"><a class="anchor" href="#_boost_plat_mingw"></a>4.6.5. <code>BOOST_PLAT_MINGW</code></h4>
5340<div class="paragraph">
5341<p><a href="http://en.wikipedia.org/wiki/MinGW">MinGW</a> platform, either variety.
5342Version number available as major, minor, and patch.</p>
5343</div>
5344<table class="tableblock frame-all grid-all stretch">
5345<colgroup>
5346<col style="width: 50%;">
5347<col style="width: 50%;">
5348</colgroup>
5349<thead>
5350<tr>
5351<th class="tableblock halign-left valign-top">Symbol</th>
5352<th class="tableblock halign-left valign-top">Version</th>
5353</tr>
5354</thead>
5355<tbody>
5356<tr>
5357<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW32__</code></p></td>
5358<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5359</tr>
5360<tr>
5361<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW64__</code></p></td>
5362<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5363</tr>
5364<tr>
5365<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW64_VERSION_MAJOR</code>, <code>__MINGW64_VERSION_MINOR</code></p></td>
5366<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
5367</tr>
5368<tr>
5369<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW32_VERSION_MAJOR</code>, <code>__MINGW32_VERSION_MINOR</code></p></td>
5370<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
5371</tr>
5372</tbody>
5373</table>
5374</div>
5375<div class="sect3">
5376<h4 id="_boost_plat_mingw32"><a class="anchor" href="#_boost_plat_mingw32"></a>4.6.6. <code>BOOST_PLAT_MINGW32</code></h4>
5377<div class="paragraph">
5378<p><a href="http://www.mingw.org/">MinGW</a> platform.
5379Version number available as major, minor, and patch.</p>
5380</div>
5381<table class="tableblock frame-all grid-all stretch">
5382<colgroup>
5383<col style="width: 50%;">
5384<col style="width: 50%;">
5385</colgroup>
5386<thead>
5387<tr>
5388<th class="tableblock halign-left valign-top">Symbol</th>
5389<th class="tableblock halign-left valign-top">Version</th>
5390</tr>
5391</thead>
5392<tbody>
5393<tr>
5394<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW32__</code></p></td>
5395<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5396</tr>
5397<tr>
5398<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW32_VERSION_MAJOR</code>, <code>__MINGW32_VERSION_MINOR</code></p></td>
5399<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
5400</tr>
5401</tbody>
5402</table>
5403</div>
5404<div class="sect3">
5405<h4 id="_boost_plat_mingw64"><a class="anchor" href="#_boost_plat_mingw64"></a>4.6.7. <code>BOOST_PLAT_MINGW64</code></h4>
5406<div class="paragraph">
5407<p><a href="https://mingw-w64.org/">MinGW-w64</a> platform.
5408Version number available as major, minor, and patch.</p>
5409</div>
5410<table class="tableblock frame-all grid-all stretch">
5411<colgroup>
5412<col style="width: 50%;">
5413<col style="width: 50%;">
5414</colgroup>
5415<thead>
5416<tr>
5417<th class="tableblock halign-left valign-top">Symbol</th>
5418<th class="tableblock halign-left valign-top">Version</th>
5419</tr>
5420</thead>
5421<tbody>
5422<tr>
5423<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW64__</code></p></td>
5424<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5425</tr>
5426<tr>
5427<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW64_VERSION_MAJOR</code>, <code>__MINGW64_VERSION_MINOR</code></p></td>
5428<td class="tableblock halign-left valign-top"><p class="tableblock">V.R.0</p></td>
5429</tr>
5430</tbody>
5431</table>
5432</div>
5433<div class="sect3">
5434<h4 id="_boost_plat_windows_desktop"><a class="anchor" href="#_boost_plat_windows_desktop"></a>4.6.8. <code>BOOST_PLAT_WINDOWS_DESKTOP</code></h4>
5435<div class="paragraph">
5436<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5437for Windows Desktop development.  Also available if the Platform SDK is too
5438old to support UWP.</p>
5439</div>
5440<table class="tableblock frame-all grid-all stretch">
5441<colgroup>
5442<col style="width: 50%;">
5443<col style="width: 50%;">
5444</colgroup>
5445<thead>
5446<tr>
5447<th class="tableblock halign-left valign-top">Symbol</th>
5448<th class="tableblock halign-left valign-top">Version</th>
5449</tr>
5450</thead>
5451<tbody>
5452<tr>
5453<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP</code></p></td>
5454<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5455</tr>
5456<tr>
5457<td class="tableblock halign-left valign-top"><p class="tableblock"><code>!BOOST_PLAT_WINDOWS_UWP</code></p></td>
5458<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5459</tr>
5460</tbody>
5461</table>
5462</div>
5463<div class="sect3">
5464<h4 id="_boost_plat_windows_phone"><a class="anchor" href="#_boost_plat_windows_phone"></a>4.6.9. <code>BOOST_PLAT_WINDOWS_PHONE</code></h4>
5465<div class="paragraph">
5466<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5467for Windows Phone development.</p>
5468</div>
5469<table class="tableblock frame-all grid-all stretch">
5470<colgroup>
5471<col style="width: 50%;">
5472<col style="width: 50%;">
5473</colgroup>
5474<thead>
5475<tr>
5476<th class="tableblock halign-left valign-top">Symbol</th>
5477<th class="tableblock halign-left valign-top">Version</th>
5478</tr>
5479</thead>
5480<tbody>
5481<tr>
5482<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP</code></p></td>
5483<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5484</tr>
5485</tbody>
5486</table>
5487</div>
5488<div class="sect3">
5489<h4 id="_boost_plat_windows_runtime"><a class="anchor" href="#_boost_plat_windows_runtime"></a>4.6.10. <code>BOOST_PLAT_WINDOWS_RUNTIME</code></h4>
5490<div class="paragraph">
5491<p>Deprecated.</p>
5492</div>
5493<div class="paragraph">
5494<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5495for Windows Phone or Store development.  This does not align to the existing development model for
5496UWP and is deprecated.  Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead.</p>
5497</div>
5498<table class="tableblock frame-all grid-all stretch">
5499<colgroup>
5500<col style="width: 50%;">
5501<col style="width: 50%;">
5502</colgroup>
5503<thead>
5504<tr>
5505<th class="tableblock halign-left valign-top">Symbol</th>
5506<th class="tableblock halign-left valign-top">Version</th>
5507</tr>
5508</thead>
5509<tbody>
5510<tr>
5511<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BOOST_PLAT_WINDOWS_PHONE</code></p></td>
5512<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5513</tr>
5514<tr>
5515<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BOOST_PLAT_WINDOWS_STORE</code></p></td>
5516<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5517</tr>
5518</tbody>
5519</table>
5520</div>
5521<div class="sect3">
5522<h4 id="_boost_plat_windows_server"><a class="anchor" href="#_boost_plat_windows_server"></a>4.6.11. <code>BOOST_PLAT_WINDOWS_SERVER</code></h4>
5523<div class="paragraph">
5524<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5525for Windows Server development.</p>
5526</div>
5527<table class="tableblock frame-all grid-all stretch">
5528<colgroup>
5529<col style="width: 50%;">
5530<col style="width: 50%;">
5531</colgroup>
5532<thead>
5533<tr>
5534<th class="tableblock halign-left valign-top">Symbol</th>
5535<th class="tableblock halign-left valign-top">Version</th>
5536</tr>
5537</thead>
5538<tbody>
5539<tr>
5540<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_SERVER</code></p></td>
5541<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5542</tr>
5543</tbody>
5544</table>
5545</div>
5546<div class="sect3">
5547<h4 id="_boost_plat_windows_store"><a class="anchor" href="#_boost_plat_windows_store"></a>4.6.12. <code>BOOST_PLAT_WINDOWS_STORE</code></h4>
5548<div class="paragraph">
5549<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5550for Windows Store development.</p>
5551</div>
5552<table class="tableblock frame-all grid-all stretch">
5553<colgroup>
5554<col style="width: 50%;">
5555<col style="width: 50%;">
5556</colgroup>
5557<thead>
5558<tr>
5559<th class="tableblock halign-left valign-top">Symbol</th>
5560<th class="tableblock halign-left valign-top">Version</th>
5561</tr>
5562</thead>
5563<tbody>
5564<tr>
5565<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_PC_APP</code></p></td>
5566<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5567</tr>
5568<tr>
5569<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_APP</code> (deprecated)</p></td>
5570<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5571</tr>
5572</tbody>
5573</table>
5574</div>
5575<div class="sect3">
5576<h4 id="_boost_plat_windows_system"><a class="anchor" href="#_boost_plat_windows_system"></a>4.6.13. <code>BOOST_PLAT_WINDOWS_SYSTEM</code></h4>
5577<div class="paragraph">
5578<p><a href="https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide">UWP</a>
5579for Windows System development.</p>
5580</div>
5581<table class="tableblock frame-all grid-all stretch">
5582<colgroup>
5583<col style="width: 50%;">
5584<col style="width: 50%;">
5585</colgroup>
5586<thead>
5587<tr>
5588<th class="tableblock halign-left valign-top">Symbol</th>
5589<th class="tableblock halign-left valign-top">Version</th>
5590</tr>
5591</thead>
5592<tbody>
5593<tr>
5594<td class="tableblock halign-left valign-top"><p class="tableblock"><code>WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM</code></p></td>
5595<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5596</tr>
5597</tbody>
5598</table>
5599</div>
5600<div class="sect3">
5601<h4 id="_boost_plat_windows_uwp"><a class="anchor" href="#_boost_plat_windows_uwp"></a>4.6.14. <code>BOOST_PLAT_WINDOWS_UWP</code></h4>
5602<div class="paragraph">
5603<p><a href="http://docs.microsoft.com/windows/uwp/">Universal Windows Platform</a>
5604is available if the current development environment is capable of targeting
5605UWP development.</p>
5606</div>
5607<table class="tableblock frame-all grid-all stretch">
5608<colgroup>
5609<col style="width: 50%;">
5610<col style="width: 50%;">
5611</colgroup>
5612<thead>
5613<tr>
5614<th class="tableblock halign-left valign-top">Symbol</th>
5615<th class="tableblock halign-left valign-top">Version</th>
5616</tr>
5617</thead>
5618<tbody>
5619<tr>
5620<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__MINGW64_VERSION_MAJOR</code> from <code>_mingw.h</code></p></td>
5621<td class="tableblock halign-left valign-top"><p class="tableblock"><code>&gt;= 3</code></p></td>
5622</tr>
5623<tr>
5624<td class="tableblock halign-left valign-top"><p class="tableblock"><code>VER_PRODUCTBUILD</code> from <code>ntverp.h</code></p></td>
5625<td class="tableblock halign-left valign-top"><p class="tableblock"><code>&gt;= 9200</code></p></td>
5626</tr>
5627</tbody>
5628</table>
5629</div>
5630</div>
5631<div class="sect2">
5632<h3 id="_boost_hw_hardware_macros"><a class="anchor" href="#_boost_hw_hardware_macros"></a>4.7. <code>BOOST_HW</code> hardware macros</h3>
5633<div class="sect3">
5634<h4 id="_using_the_boost_hw_simd_predefs"><a class="anchor" href="#_using_the_boost_hw_simd_predefs"></a>4.7.1. Using the <code>BOOST_HW_SIMD_*</code> predefs</h4>
5635<div class="paragraph">
5636<p>SIMD predefs depend on compiler options. For example, you will have to add the
5637option <code>-msse3</code> to clang or gcc to enable SSE3. SIMD predefs are also inclusive.
5638This means that if SSE3 is enabled, then every other extensions with a lower
5639version number will implicitly be enabled and detected. However, some extensions
5640are CPU specific, they may not be detected nor enabled when an upper version is
5641enabled.</p>
5642</div>
5643<div class="admonitionblock note">
5644<table>
5645<tr>
5646<td class="icon">
5647<div class="title">ℹ</div>
5648</td>
5649<td class="content">
5650SSE(1) and SSE2 are automatically enabled by default when using x86-64
5651architecture.
5652</td>
5653</tr>
5654</table>
5655</div>
5656<div class="paragraph">
5657<p>To check if any SIMD extension has been enabled, you can use:</p>
5658</div>
5659<div class="listingblock">
5660<div class="content">
5661<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="tok-cp"></span>
5662<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
5663
5664<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
5665<span class="tok-p">{</span>
5666<span class="tok-cp">#if defined(BOOST_HW_SIMD_AVAILABLE)</span>
5667    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;SIMD detected!&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
5668<span class="tok-cp">#endif</span>
5669    <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
5670<span class="tok-p">}</span></code></pre>
5671</div>
5672</div>
5673<div class="paragraph">
5674<p>When writing SIMD specific code, you may want to check if a particular extension
5675has been detected. To do so you have to use the right architecture predef and
5676compare it. Those predef are of the form <code>BOOST_HW_SIMD_"ARCH"</code> (where <code>"ARCH"</code>
5677is either <code>ARM</code>, <code>PPC</code>, or <code>X86</code>). For example, if you compile code for x86
5678architecture, you will have to use <code>BOOST_HW_SIMD_X86</code>. Its value will be the
5679version number of the most recent SIMD extension detected for the architecture.</p>
5680</div>
5681<div class="paragraph">
5682<p>To check if an extension has been enabled:</p>
5683</div>
5684<div class="listingblock">
5685<div class="content">
5686<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="tok-cp"></span>
5687<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
5688
5689<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
5690<span class="tok-p">{</span>
5691<span class="tok-cp">#if BOOST_HW_SIMD_X86 &gt;= BOOST_HW_SIMD_X86_SSE3_VERSION</span>
5692    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;This is SSE3!&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
5693<span class="tok-cp">#endif</span>
5694    <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
5695<span class="tok-p">}</span></code></pre>
5696</div>
5697</div>
5698<div class="admonitionblock note">
5699<table>
5700<tr>
5701<td class="icon">
5702<div class="title">ℹ</div>
5703</td>
5704<td class="content">
5705The <strong>_VERSION</strong> defines that map version number to actual real
5706identifiers. This way it is easier to write comparisons without messing up with
5707version numbers.
5708</td>
5709</tr>
5710</table>
5711</div>
5712<div class="paragraph">
5713<p>To <strong>"strictly"</strong> check the most recent detected extension:</p>
5714</div>
5715<div class="listingblock">
5716<div class="content">
5717<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="tok-cp"></span>
5718<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
5719
5720<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
5721<span class="tok-p">{</span>
5722<span class="tok-cp">#if BOOST_HW_SIMD_X86 == BOOST_HW_SIMD_X86_SSE3_VERSION</span>
5723    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;This is SSE3 and this is the most recent enabled extension!&quot;</span>
5724        <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
5725<span class="tok-cp">#endif</span>
5726    <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
5727<span class="tok-p">}</span></code></pre>
5728</div>
5729</div>
5730<div class="paragraph">
5731<p>Because of the version systems of predefs and of the inclusive property of SIMD
5732extensions macros, you can easily check for ranges of supported extensions:</p>
5733</div>
5734<div class="listingblock">
5735<div class="content">
5736<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#include</span> <span class="tok-cpf">&lt;boost/predef/hardware/simd.h&gt;</span><span class="tok-cp"></span>
5737<span class="tok-cp">#include</span> <span class="tok-cpf">&lt;iostream&gt;</span><span class="tok-cp"></span>
5738
5739<span class="tok-kt">int</span> <span class="tok-nf">main</span><span class="tok-p">()</span>
5740<span class="tok-p">{</span>
5741<span class="tok-cp">#if BOOST_HW_SIMD_X86 &gt;= BOOST_HW_SIMD_X86_SSE2_VERSION &amp;&amp;\</span>
5742<span class="tok-cp">    BOOST_HW_SIMD_X86 &lt;= BOOST_HW_SIMD_X86_SSSE3_VERSION</span>
5743    <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">cout</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-s">&quot;This is SSE2, SSE3 and SSSE3!&quot;</span> <span class="tok-o">&lt;&lt;</span> <span class="tok-n">std</span><span class="tok-o">::</span><span class="tok-n">endl</span><span class="tok-p">;</span>
5744<span class="tok-cp">#endif</span>
5745    <span class="tok-k">return</span> <span class="tok-mi">0</span><span class="tok-p">;</span>
5746<span class="tok-p">}</span></code></pre>
5747</div>
5748</div>
5749<div class="admonitionblock note">
5750<table>
5751<tr>
5752<td class="icon">
5753<div class="title">ℹ</div>
5754</td>
5755<td class="content">
5756Unlike gcc and clang, Visual Studio does not allow you to specify precisely
5757the SSE variants you want to use, the only detections that will take place are
5758SSE, SSE2, AVX and AVX2. For more informations,
5759    see [@https://msdn.microsoft.com/en-us/library/b0084kay.aspx here].
5760</td>
5761</tr>
5762</table>
5763</div>
5764</div>
5765<div class="sect3">
5766<h4 id="_boost_hw_simd_arm"><a class="anchor" href="#_boost_hw_simd_arm"></a>4.7.2. <code>BOOST_HW_SIMD_ARM</code></h4>
5767<div class="paragraph">
5768<p>The SIMD extension for ARM (<strong>if detected</strong>).
5769Version number depends on the most recent detected extension.</p>
5770</div>
5771<table class="tableblock frame-all grid-all stretch">
5772<colgroup>
5773<col style="width: 50%;">
5774<col style="width: 50%;">
5775</colgroup>
5776<thead>
5777<tr>
5778<th class="tableblock halign-left valign-top">Symbol</th>
5779<th class="tableblock halign-left valign-top">Version</th>
5780</tr>
5781</thead>
5782<tbody>
5783<tr>
5784<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_NEON__</code></p></td>
5785<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5786</tr>
5787<tr>
5788<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__aarch64__</code></p></td>
5789<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5790</tr>
5791<tr>
5792<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM</code></p></td>
5793<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5794</tr>
5795<tr>
5796<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM64</code></p></td>
5797<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5798</tr>
5799</tbody>
5800</table>
5801<table class="tableblock frame-all grid-all stretch">
5802<colgroup>
5803<col style="width: 50%;">
5804<col style="width: 50%;">
5805</colgroup>
5806<thead>
5807<tr>
5808<th class="tableblock halign-left valign-top">Symbol</th>
5809<th class="tableblock halign-left valign-top">Version</th>
5810</tr>
5811</thead>
5812<tbody>
5813<tr>
5814<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ARM_NEON__</code></p></td>
5815<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_ARM_NEON_VERSION</p></td>
5816</tr>
5817<tr>
5818<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__aarch64__</code></p></td>
5819<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_ARM_NEON_VERSION</p></td>
5820</tr>
5821<tr>
5822<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM</code></p></td>
5823<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_ARM_NEON_VERSION</p></td>
5824</tr>
5825<tr>
5826<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_ARM64</code></p></td>
5827<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_ARM_NEON_VERSION</p></td>
5828</tr>
5829</tbody>
5830</table>
5831</div>
5832<div class="sect3">
5833<h4 id="_boost_hw_simd_arm_version"><a class="anchor" href="#_boost_hw_simd_arm_version"></a>4.7.3. <code>BOOST_HW_SIMD_ARM_*_VERSION</code></h4>
5834<div class="paragraph">
5835<p>Those defines represent ARM SIMD extensions versions.</p>
5836</div>
5837<div class="admonitionblock note">
5838<table>
5839<tr>
5840<td class="icon">
5841<div class="title">ℹ</div>
5842</td>
5843<td class="content">
5844You <strong>MUST</strong> compare them with the predef <code>BOOST_HW_SIMD_ARM</code>.
5845= <code>BOOST_HW_SIMD_ARM_NEON_VERSION</code>
5846</td>
5847</tr>
5848</table>
5849</div>
5850<div class="paragraph">
5851<p>The <a href="https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29">NEON</a>
5852ARM extension version number.</p>
5853</div>
5854<div class="paragraph">
5855<p>Version number is: <strong>1.0.0</strong>.</p>
5856</div>
5857</div>
5858<div class="sect3">
5859<h4 id="_boost_hw_simd_ppc"><a class="anchor" href="#_boost_hw_simd_ppc"></a>4.7.4. <code>BOOST_HW_SIMD_PPC</code></h4>
5860<div class="paragraph">
5861<p>The SIMD extension for PowerPC (<strong>if detected</strong>).
5862Version number depends on the most recent detected extension.</p>
5863</div>
5864<table class="tableblock frame-all grid-all stretch">
5865<colgroup>
5866<col style="width: 50%;">
5867<col style="width: 50%;">
5868</colgroup>
5869<thead>
5870<tr>
5871<th class="tableblock halign-left valign-top">Symbol</th>
5872<th class="tableblock halign-left valign-top">Version</th>
5873</tr>
5874</thead>
5875<tbody>
5876<tr>
5877<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VECTOR4DOUBLE__</code></p></td>
5878<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5879</tr>
5880<tr>
5881<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ALTIVEC__</code></p></td>
5882<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5883</tr>
5884<tr>
5885<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VEC__</code></p></td>
5886<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5887</tr>
5888<tr>
5889<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VSX__</code></p></td>
5890<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5891</tr>
5892</tbody>
5893</table>
5894<table class="tableblock frame-all grid-all stretch">
5895<colgroup>
5896<col style="width: 50%;">
5897<col style="width: 50%;">
5898</colgroup>
5899<thead>
5900<tr>
5901<th class="tableblock halign-left valign-top">Symbol</th>
5902<th class="tableblock halign-left valign-top">Version</th>
5903</tr>
5904</thead>
5905<tbody>
5906<tr>
5907<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VECTOR4DOUBLE__</code></p></td>
5908<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_PPC_QPX_VERSION</p></td>
5909</tr>
5910<tr>
5911<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__ALTIVEC__</code></p></td>
5912<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_PPC_VMX_VERSION</p></td>
5913</tr>
5914<tr>
5915<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VEC__</code></p></td>
5916<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_PPC_VMX_VERSION</p></td>
5917</tr>
5918<tr>
5919<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__VSX__</code></p></td>
5920<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_PPC_VSX_VERSION</p></td>
5921</tr>
5922</tbody>
5923</table>
5924</div>
5925<div class="sect3">
5926<h4 id="_boost_hw_simd_ppc_version"><a class="anchor" href="#_boost_hw_simd_ppc_version"></a>4.7.5. <code>BOOST_HW_SIMD_PPC_*_VERSION</code></h4>
5927<div class="paragraph">
5928<p>Those defines represent Power PC SIMD extensions versions.</p>
5929</div>
5930<div class="admonitionblock note">
5931<table>
5932<tr>
5933<td class="icon">
5934<div class="title">ℹ</div>
5935</td>
5936<td class="content">
5937You <strong>MUST</strong> compare them with the predef <code>BOOST_HW_SIMD_PPC</code>.
5938= <code>BOOST_HW_SIMD_PPC_VMX_VERSION</code>
5939</td>
5940</tr>
5941</table>
5942</div>
5943<div class="paragraph">
5944<p>The <a href="https://en.wikipedia.org/wiki/AltiVec#VMX128">VMX</a> powerpc extension
5945version number.</p>
5946</div>
5947<div class="paragraph">
5948<p>Version number is: <strong>1.0.0</strong>.
5949= <code>BOOST_HW_SIMD_PPC_VSX_VERSION</code></p>
5950</div>
5951<div class="paragraph">
5952<p>The <a href="https://en.wikipedia.org/wiki/AltiVec#VSX">VSX</a> powerpc extension version
5953number.</p>
5954</div>
5955<div class="paragraph">
5956<p>Version number is: <strong>1.1.0</strong>.
5957= <code>BOOST_HW_SIMD_PPC_QPX_VERSION</code></p>
5958</div>
5959<div class="paragraph">
5960<p>The QPX powerpc extension version number.</p>
5961</div>
5962<div class="paragraph">
5963<p>Version number is: <strong>2.0.0</strong>.</p>
5964</div>
5965</div>
5966<div class="sect3">
5967<h4 id="_boost_hw_simd_x86"><a class="anchor" href="#_boost_hw_simd_x86"></a>4.7.6. <code>BOOST_HW_SIMD_X86</code></h4>
5968<div class="paragraph">
5969<p>The SIMD extension for x86 (<strong>if detected</strong>).
5970Version number depends on the most recent detected extension.</p>
5971</div>
5972<table class="tableblock frame-all grid-all stretch">
5973<colgroup>
5974<col style="width: 50%;">
5975<col style="width: 50%;">
5976</colgroup>
5977<thead>
5978<tr>
5979<th class="tableblock halign-left valign-top">Symbol</th>
5980<th class="tableblock halign-left valign-top">Version</th>
5981</tr>
5982</thead>
5983<tbody>
5984<tr>
5985<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE__</code></p></td>
5986<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5987</tr>
5988<tr>
5989<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_X64</code></p></td>
5990<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5991</tr>
5992<tr>
5993<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86_FP &gt;= 1</code></p></td>
5994<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5995</tr>
5996<tr>
5997<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE2__</code></p></td>
5998<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
5999</tr>
6000<tr>
6001<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_X64</code></p></td>
6002<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6003</tr>
6004<tr>
6005<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86_FP &gt;= 2</code></p></td>
6006<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6007</tr>
6008<tr>
6009<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE3__</code></p></td>
6010<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6011</tr>
6012<tr>
6013<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSSE3__</code></p></td>
6014<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6015</tr>
6016<tr>
6017<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4_1__</code></p></td>
6018<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6019</tr>
6020<tr>
6021<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4_2__</code></p></td>
6022<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6023</tr>
6024<tr>
6025<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AVX__</code></p></td>
6026<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6027</tr>
6028<tr>
6029<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FMA__</code></p></td>
6030<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6031</tr>
6032<tr>
6033<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AVX2__</code></p></td>
6034<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6035</tr>
6036</tbody>
6037</table>
6038<table class="tableblock frame-all grid-all stretch">
6039<colgroup>
6040<col style="width: 50%;">
6041<col style="width: 50%;">
6042</colgroup>
6043<thead>
6044<tr>
6045<th class="tableblock halign-left valign-top">Symbol</th>
6046<th class="tableblock halign-left valign-top">Version</th>
6047</tr>
6048</thead>
6049<tbody>
6050<tr>
6051<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE__</code></p></td>
6052<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE_VERSION</p></td>
6053</tr>
6054<tr>
6055<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_X64</code></p></td>
6056<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE_VERSION</p></td>
6057</tr>
6058<tr>
6059<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86_FP &gt;= 1</code></p></td>
6060<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE_VERSION</p></td>
6061</tr>
6062<tr>
6063<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE2__</code></p></td>
6064<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE2_VERSION</p></td>
6065</tr>
6066<tr>
6067<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_X64</code></p></td>
6068<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE2_VERSION</p></td>
6069</tr>
6070<tr>
6071<td class="tableblock halign-left valign-top"><p class="tableblock"><code>_M_IX86_FP &gt;= 2</code></p></td>
6072<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE2_VERSION</p></td>
6073</tr>
6074<tr>
6075<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE3__</code></p></td>
6076<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE3_VERSION</p></td>
6077</tr>
6078<tr>
6079<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSSE3__</code></p></td>
6080<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSSE3_VERSION</p></td>
6081</tr>
6082<tr>
6083<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4_1__</code></p></td>
6084<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE4_1_VERSION</p></td>
6085</tr>
6086<tr>
6087<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4_2__</code></p></td>
6088<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE4_2_VERSION</p></td>
6089</tr>
6090<tr>
6091<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AVX__</code></p></td>
6092<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_AVX_VERSION</p></td>
6093</tr>
6094<tr>
6095<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FMA__</code></p></td>
6096<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_FMA3_VERSION</p></td>
6097</tr>
6098<tr>
6099<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__AVX2__</code></p></td>
6100<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_AVX2_VERSION</p></td>
6101</tr>
6102</tbody>
6103</table>
6104</div>
6105<div class="sect3">
6106<h4 id="_boost_hw_simd_x86_version"><a class="anchor" href="#_boost_hw_simd_x86_version"></a>4.7.7. <code>BOOST_HW_SIMD_X86_*_VERSION</code></h4>
6107<div class="paragraph">
6108<p>Those defines represent x86 SIMD extensions versions.</p>
6109</div>
6110<div class="admonitionblock note">
6111<table>
6112<tr>
6113<td class="icon">
6114<div class="title">ℹ</div>
6115</td>
6116<td class="content">
6117You <strong>MUST</strong> compare them with the predef <code>BOOST_HW_SIMD_X86</code>.
6118= <code>BOOST_HW_SIMD_X86_MMX_VERSION</code>
6119</td>
6120</tr>
6121</table>
6122</div>
6123<div class="paragraph">
6124<p>The <a href="https://en.wikipedia.org/wiki/MMX_(instruction_set)">MMX</a> x86 extension
6125version number.</p>
6126</div>
6127<div class="paragraph">
6128<p>Version number is: <strong>0.99.0</strong>.
6129= <code>BOOST_HW_SIMD_X86_SSE_VERSION</code></p>
6130</div>
6131<div class="paragraph">
6132<p>The <a href="https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions">SSE</a> x86 extension
6133version number.</p>
6134</div>
6135<div class="paragraph">
6136<p>Version number is: <strong>1.0.0</strong>.
6137= <code>BOOST_HW_SIMD_X86_SSE2_VERSION</code></p>
6138</div>
6139<div class="paragraph">
6140<p>The <a href="https://en.wikipedia.org/wiki/SSE2">SSE2</a> x86 extension version number.</p>
6141</div>
6142<div class="paragraph">
6143<p>Version number is: <strong>2.0.0</strong>.
6144= <code>BOOST_HW_SIMD_X86_SSE3_VERSION</code></p>
6145</div>
6146<div class="paragraph">
6147<p>The <a href="https://en.wikipedia.org/wiki/SSE3">SSE3</a> x86 extension version number.</p>
6148</div>
6149<div class="paragraph">
6150<p>Version number is: <strong>3.0.0</strong>.
6151= <code>BOOST_HW_SIMD_X86_SSSE3_VERSION</code></p>
6152</div>
6153<div class="paragraph">
6154<p>The <a href="https://en.wikipedia.org/wiki/SSSE3">SSSE3</a> x86 extension version number.</p>
6155</div>
6156<div class="paragraph">
6157<p>Version number is: <strong>3.1.0</strong>.
6158= <code>BOOST_HW_SIMD_X86_SSE4_1_VERSION</code></p>
6159</div>
6160<div class="paragraph">
6161<p>The <a href="https://en.wikipedia.org/wiki/SSE4#SSE4.1">SSE4_1</a> x86 extension version
6162number.</p>
6163</div>
6164<div class="paragraph">
6165<p>Version number is: <strong>4.1.0</strong>.
6166= <code>BOOST_HW_SIMD_X86_SSE4_2_VERSION</code></p>
6167</div>
6168<div class="paragraph">
6169<p>The <a href="https://en.wikipedia.org/wiki/SSE4##SSE4.2">SSE4_2</a> x86 extension version
6170number.</p>
6171</div>
6172<div class="paragraph">
6173<p>Version number is: <strong>4.2.0</strong>.
6174= <code>BOOST_HW_SIMD_X86_AVX_VERSION</code></p>
6175</div>
6176<div class="paragraph">
6177<p>The <a href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions">AVX</a> x86
6178extension version number.</p>
6179</div>
6180<div class="paragraph">
6181<p>Version number is: <strong>5.0.0</strong>.
6182= <code>BOOST_HW_SIMD_X86_FMA3_VERSION</code></p>
6183</div>
6184<div class="paragraph">
6185<p>The <a href="https://en.wikipedia.org/wiki/FMA_instruction_set">FMA3</a> x86 extension
6186version number.</p>
6187</div>
6188<div class="paragraph">
6189<p>Version number is: <strong>5.2.0</strong>.
6190= <code>BOOST_HW_SIMD_X86_AVX2_VERSION</code></p>
6191</div>
6192<div class="paragraph">
6193<p>The <a href="https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2">AVX2</a>
6194x86 extension version number.</p>
6195</div>
6196<div class="paragraph">
6197<p>Version number is: <strong>5.3.0</strong>.
6198= <code>BOOST_HW_SIMD_X86_MIC_VERSION</code></p>
6199</div>
6200<div class="paragraph">
6201<p>The <a href="https://en.wikipedia.org/wiki/Xeon_Phi">MIC</a> (Xeon Phi) x86 extension
6202version number.</p>
6203</div>
6204<div class="paragraph">
6205<p>Version number is: <strong>9.0.0</strong>.</p>
6206</div>
6207</div>
6208<div class="sect3">
6209<h4 id="_boost_hw_simd_x86_amd"><a class="anchor" href="#_boost_hw_simd_x86_amd"></a>4.7.8. <code>BOOST_HW_SIMD_X86_AMD</code></h4>
6210<div class="paragraph">
6211<p>The SIMD extension for x86 (AMD) (<strong>if detected</strong>).
6212Version number depends on the most recent detected extension.</p>
6213</div>
6214<table class="tableblock frame-all grid-all stretch">
6215<colgroup>
6216<col style="width: 50%;">
6217<col style="width: 50%;">
6218</colgroup>
6219<thead>
6220<tr>
6221<th class="tableblock halign-left valign-top">Symbol</th>
6222<th class="tableblock halign-left valign-top">Version</th>
6223</tr>
6224</thead>
6225<tbody>
6226<tr>
6227<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4A__</code></p></td>
6228<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6229</tr>
6230<tr>
6231<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FMA4__</code></p></td>
6232<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6233</tr>
6234<tr>
6235<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__XOP__</code></p></td>
6236<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6237</tr>
6238<tr>
6239<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BOOST_HW_SIMD_X86</code></p></td>
6240<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>detection</strong></p></td>
6241</tr>
6242</tbody>
6243</table>
6244<table class="tableblock frame-all grid-all stretch">
6245<colgroup>
6246<col style="width: 50%;">
6247<col style="width: 50%;">
6248</colgroup>
6249<thead>
6250<tr>
6251<th class="tableblock halign-left valign-top">Symbol</th>
6252<th class="tableblock halign-left valign-top">Version</th>
6253</tr>
6254</thead>
6255<tbody>
6256<tr>
6257<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__SSE4A__</code></p></td>
6258<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_SSE4A_VERSION</p></td>
6259</tr>
6260<tr>
6261<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__FMA4__</code></p></td>
6262<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_FMA4_VERSION</p></td>
6263</tr>
6264<tr>
6265<td class="tableblock halign-left valign-top"><p class="tableblock"><code>__XOP__</code></p></td>
6266<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86_XOP_VERSION</p></td>
6267</tr>
6268<tr>
6269<td class="tableblock halign-left valign-top"><p class="tableblock"><code>BOOST_HW_SIMD_X86</code></p></td>
6270<td class="tableblock halign-left valign-top"><p class="tableblock">BOOST_HW_SIMD_X86</p></td>
6271</tr>
6272</tbody>
6273</table>
6274<div class="admonitionblock note">
6275<table>
6276<tr>
6277<td class="icon">
6278<div class="title">ℹ</div>
6279</td>
6280<td class="content">
6281This predef includes every other x86 SIMD extensions and also has other
6282more specific extensions (FMA4, XOP, SSE4a). You should use this predef
6283instead of <code>BOOST_HW_SIMD_X86</code> to test if those specific extensions have
6284been detected.
6285</td>
6286</tr>
6287</table>
6288</div>
6289</div>
6290<div class="sect3">
6291<h4 id="_boost_hw_simd_x86_amd_version"><a class="anchor" href="#_boost_hw_simd_x86_amd_version"></a>4.7.9. <code>BOOST_HW_SIMD_X86_AMD_*_VERSION</code></h4>
6292<div class="paragraph">
6293<p>Those defines represent x86 (AMD specific) SIMD extensions versions.</p>
6294</div>
6295<div class="admonitionblock note">
6296<table>
6297<tr>
6298<td class="icon">
6299<div class="title">ℹ</div>
6300</td>
6301<td class="content">
6302You <strong>MUST</strong> compare them with the predef <code>BOOST_HW_SIMD_X86_AMD</code>.
6303= <code>BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION</code>
6304</td>
6305</tr>
6306</table>
6307</div>
6308<div class="paragraph">
6309<p><a href="https://en.wikipedia.org/wiki/SSE4##SSE4A">SSE4A</a> x86 extension (AMD specific).</p>
6310</div>
6311<div class="paragraph">
6312<p>Version number is: <strong>4.0.0</strong>.
6313= <code>BOOST_HW_SIMD_X86_AMD_FMA4_VERSION</code></p>
6314</div>
6315<div class="paragraph">
6316<p><a href="https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set">FMA4</a> x86 extension (AMD specific).</p>
6317</div>
6318<div class="paragraph">
6319<p>Version number is: <strong>5.1.0</strong>.
6320= <code>BOOST_HW_SIMD_X86_AMD_XOP_VERSION</code></p>
6321</div>
6322<div class="paragraph">
6323<p><a href="https://en.wikipedia.org/wiki/XOP_instruction_set">XOP</a> x86 extension (AMD specific).</p>
6324</div>
6325<div class="paragraph">
6326<p>Version number is: <strong>5.1.1</strong>.</p>
6327</div>
6328</div>
6329</div>
6330<div class="sect2">
6331<h3 id="_other_macros"><a class="anchor" href="#_other_macros"></a>4.8. Other macros</h3>
6332<div class="sect3">
6333<h4 id="_boost_endian"><a class="anchor" href="#_boost_endian"></a>4.8.1. <code>BOOST_ENDIAN_*</code></h4>
6334<div class="paragraph">
6335<p>Detection of endian memory ordering. There are four defined macros
6336in this header that define the various generally possible endian
6337memory orderings:</p>
6338</div>
6339<div class="ulist">
6340<ul>
6341<li>
6342<p><code>BOOST_ENDIAN_BIG_BYTE</code>, byte-swapped big-endian.</p>
6343</li>
6344<li>
6345<p><code>BOOST_ENDIAN_BIG_WORD</code>, word-swapped big-endian.</p>
6346</li>
6347<li>
6348<p><code>BOOST_ENDIAN_LITTLE_BYTE</code>, byte-swapped little-endian.</p>
6349</li>
6350<li>
6351<p><code>BOOST_ENDIAN_LITTLE_WORD</code>, word-swapped little-endian.</p>
6352</li>
6353</ul>
6354</div>
6355<div class="paragraph">
6356<p>The detection is conservative in that it only identifies endianness
6357that it knows for certain. In particular bi-endianness is not
6358indicated as is it not practically possible to determine the
6359endianness from anything but an operating system provided
6360header. And the currently known headers do not define that
6361programatic bi-endianness is available.</p>
6362</div>
6363<div class="paragraph">
6364<p>This implementation is a compilation of various publicly available
6365information and acquired knowledge:</p>
6366</div>
6367<div class="olist arabic">
6368<ol class="arabic">
6369<li>
6370<p>The indispensable documentation of "Pre-defined Compiler Macros"
6371<a href="http://sourceforge.net/p/predef/wiki/Endianness">Endianness</a>.</p>
6372</li>
6373<li>
6374<p>The various endian specifications available in the
6375<a href="http://wikipedia.org/">Wikipedia</a> computer architecture pages.</p>
6376</li>
6377<li>
6378<p>Generally available searches for headers that define endianness.</p>
6379</li>
6380</ol>
6381</div>
6382</div>
6383<div class="sect3">
6384<h4 id="_boost_predef_workaround"><a class="anchor" href="#_boost_predef_workaround"></a>4.8.2. <code>BOOST_PREDEF_WORKAROUND</code></h4>
6385<div class="listingblock">
6386<div class="content">
6387<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-n">BOOST_PREDEF_WORKAROUND</span><span class="tok-p">(</span><span class="tok-n">symbol</span><span class="tok-p">,</span><span class="tok-n">comp</span><span class="tok-p">,</span><span class="tok-n">major</span><span class="tok-p">,</span><span class="tok-n">minor</span><span class="tok-p">,</span><span class="tok-n">patch</span><span class="tok-p">)</span></code></pre>
6388</div>
6389</div>
6390<div class="paragraph">
6391<p>Usage:</p>
6392</div>
6393<div class="listingblock">
6394<div class="content">
6395<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if BOOST_PREDEF_WORKAROUND(BOOST_COMP_CLANG,&lt;,3,0,0)</span>
6396    <span class="tok-c1">// Workaround for old clang compilers..</span>
6397<span class="tok-cp">#endif</span></code></pre>
6398</div>
6399</div>
6400<div class="paragraph">
6401<p>Defines a comparison against two version numbers that depends on the definion
6402of <code>BOOST_STRICT_CONFIG</code>. When <code>BOOST_STRICT_CONFIG</code> is defined this will expand
6403to a value convertible to <code>false</code>. Which has the effect of disabling all code
6404conditionally guarded by <code>BOOST_PREDEF_WORKAROUND</code>. When <code>BOOST_STRICT_CONFIG</code>
6405is undefine this expand to test the given <code>symbol</code> version value with the
6406<code>comp</code> comparison against <code>BOOST_VERSION_NUMBER(major,minor,patch)</code>.</p>
6407</div>
6408</div>
6409<div class="sect3">
6410<h4 id="_boost_predef_tested_at"><a class="anchor" href="#_boost_predef_tested_at"></a>4.8.3. <code>BOOST_PREDEF_TESTED_AT</code></h4>
6411<div class="listingblock">
6412<div class="content">
6413<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-n">BOOST_PREDEF_TESTED_AT</span><span class="tok-p">(</span><span class="tok-n">symbol</span><span class="tok-p">,</span><span class="tok-n">major</span><span class="tok-p">,</span><span class="tok-n">minor</span><span class="tok-p">,</span><span class="tok-n">patch</span><span class="tok-p">)</span></code></pre>
6414</div>
6415</div>
6416<div class="paragraph">
6417<p>Usage:</p>
6418</div>
6419<div class="listingblock">
6420<div class="content">
6421<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-cp">#if BOOST_PREDEF_TESTED_AT(BOOST_COMP_CLANG,3,5,0)</span>
6422    <span class="tok-c1">// Needed for clang, and last checked for 3.5.0.</span>
6423<span class="tok-cp">#endif</span></code></pre>
6424</div>
6425</div>
6426<div class="paragraph">
6427<p>Defines a comparison against two version numbers that depends on the definion
6428of <code>BOOST_STRICT_CONFIG</code> and <code>BOOST_DETECT_OUTDATED_WORKAROUNDS</code>.
6429When <code>BOOST_STRICT_CONFIG</code> is defined this will expand to a value convertible
6430to <code>false</code>. Which has the effect of disabling all code
6431conditionally guarded by <code>BOOST_PREDEF_TESTED_AT</code>. When <code>BOOST_STRICT_CONFIG</code>
6432is undefined this expand to either:</p>
6433</div>
6434<div class="ulist">
6435<ul>
6436<li>
6437<p>A value convertible to <code>true</code> when <code>BOOST_DETECT_OUTDATED_WORKAROUNDS</code> is not
6438defined.</p>
6439</li>
6440<li>
6441<p>A value convertible <code>true</code> when the expansion of
6442<code>BOOST_PREDEF_WORKAROUND(symbol, &#8656;, major, minor, patch)</code> is <code>true</code> and
6443<code>BOOST_DETECT_OUTDATED_WORKAROUNDS</code> is defined.</p>
6444</li>
6445<li>
6446<p>A compile error when the expansion of
6447<code>BOOST_PREDEF_WORKAROUND(symbol, &gt;, major, minor, patch)</code> is true and
6448<code>BOOST_DETECT_OUTDATED_WORKAROUNDS</code> is defined.</p>
6449</li>
6450</ul>
6451</div>
6452</div>
6453</div>
6454<div class="sect2">
6455<h3 id="_version_definition_macros"><a class="anchor" href="#_version_definition_macros"></a>4.9. Version definition macros</h3>
6456<div class="sect3">
6457<h4 id="_boost_version_number"><a class="anchor" href="#_boost_version_number"></a>4.9.1. <code>BOOST_VERSION_NUMBER</code></h4>
6458<div class="listingblock">
6459<div class="content">
6460<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-n">BOOST_VERSION_NUMBER</span><span class="tok-p">(</span><span class="tok-n">major</span><span class="tok-p">,</span><span class="tok-n">minor</span><span class="tok-p">,</span><span class="tok-n">patch</span><span class="tok-p">)</span></code></pre>
6461</div>
6462</div>
6463<div class="paragraph">
6464<p>Defines standard version numbers, with these properties:</p>
6465</div>
6466<div class="ulist">
6467<ul>
6468<li>
6469<p>Decimal base whole numbers in the range [0,1000000000).
6470The number range is designed to allow for a (2,2,5) triplet.
6471Which fits within a 32 bit value.</p>
6472</li>
6473<li>
6474<p>The <code>major</code> number can be in the [0,99] range.</p>
6475</li>
6476<li>
6477<p>The <code>minor</code> number can be in the [0,99] range.</p>
6478</li>
6479<li>
6480<p>The <code>patch</code> number can be in the [0,99999] range.</p>
6481</li>
6482<li>
6483<p>Values can be specified in any base. As the defined value
6484is an constant expression.</p>
6485</li>
6486<li>
6487<p>Value can be directly used in both preprocessor and compiler
6488expressions for comparison to other similarly defined values.</p>
6489</li>
6490<li>
6491<p>The implementation enforces the individual ranges for the
6492major, minor, and patch numbers. And values over the ranges
6493are truncated (modulo).</p>
6494</li>
6495</ul>
6496</div>
6497<div class="listingblock">
6498<div class="content">
6499<pre class="pygments highlight"><code data-lang="cpp"><span></span><span class="tok-n">BOOST_VERSION_NUMBER_MAJOR</span><span class="tok-p">(</span><span class="tok-n">N</span><span class="tok-p">),</span> <span class="tok-n">BOOST_VERSION_NUMBER_MINOR</span><span class="tok-p">(</span><span class="tok-n">N</span><span class="tok-p">),</span> <span class="tok-n">BOOST_VERSION_NUMBER_PATCH</span><span class="tok-p">(</span><span class="tok-n">N</span><span class="tok-p">)</span></code></pre>
6500</div>
6501</div>
6502<div class="paragraph">
6503<p>The macros extract the major, minor, and patch portion from a well formed
6504version number resulting in a preprocessor expression in the range of
6505[0,99] or [0,99999] for the major and minor, or patch numbers
6506respectively.</p>
6507</div>
6508</div>
6509<div class="sect3">
6510<h4 id="_boost_predef_make_macros"><a class="anchor" href="#_boost_predef_make_macros"></a>4.9.2. <code>BOOST_PREDEF_MAKE_..</code> macros</h4>
6511<div class="paragraph">
6512<p>These set of macros decompose common vendor version number
6513macros which are composed version, revision, and patch digits.
6514The naming convention indicates:</p>
6515</div>
6516<div class="ulist">
6517<ul>
6518<li>
6519<p>The base of the specified version number. &#8220;BOOST_PREDEF_MAKE_0X&#8221; for
6520hexadecimal digits, and &#8220;BOOST_PREDEF_MAKE_10&#8221; for decimal digits.</p>
6521</li>
6522<li>
6523<p>The format of the vendor version number. Where &#8220;V&#8221; indicates the version digits,
6524&#8220;R&#8221; indicates the revision digits, &#8220;P&#8221; indicates the patch digits, and &#8220;0&#8221;
6525indicates an ignored digit.</p>
6526</li>
6527</ul>
6528</div>
6529<div class="paragraph">
6530<p>Macros are:</p>
6531</div>
6532<div class="ulist">
6533<ul>
6534<li>
6535<p><code>BOOST_PREDEF_MAKE_0X_VRP(V)</code></p>
6536</li>
6537<li>
6538<p><code>BOOST_PREDEF_MAKE_0X_VVRP(V)</code></p>
6539</li>
6540<li>
6541<p><code>BOOST_PREDEF_MAKE_0X_VRPP(V)</code></p>
6542</li>
6543<li>
6544<p><code>BOOST_PREDEF_MAKE_0X_VVRR(V)</code></p>
6545</li>
6546<li>
6547<p><code>BOOST_PREDEF_MAKE_0X_VRRPPPP(V)</code></p>
6548</li>
6549<li>
6550<p><code>BOOST_PREDEF_MAKE_0X_VVRRP(V)</code></p>
6551</li>
6552<li>
6553<p><code>BOOST_PREDEF_MAKE_0X_VRRPP000(V)</code></p>
6554</li>
6555<li>
6556<p><code>BOOST_PREDEF_MAKE_0X_VVRRPP(V)</code></p>
6557</li>
6558<li>
6559<p><code>BOOST_PREDEF_MAKE_10_VPPP(V)</code></p>
6560</li>
6561<li>
6562<p><code>BOOST_PREDEF_MAKE_10_VR0(V)</code></p>
6563</li>
6564<li>
6565<p><code>BOOST_PREDEF_MAKE_10_VRP(V)</code></p>
6566</li>
6567<li>
6568<p><code>BOOST_PREDEF_MAKE_10_VRP000(V)</code></p>
6569</li>
6570<li>
6571<p><code>BOOST_PREDEF_MAKE_10_VRPPPP(V)</code></p>
6572</li>
6573<li>
6574<p><code>BOOST_PREDEF_MAKE_10_VRPP(V)</code></p>
6575</li>
6576<li>
6577<p><code>BOOST_PREDEF_MAKE_10_VRR(V)</code></p>
6578</li>
6579<li>
6580<p><code>BOOST_PREDEF_MAKE_10_VRRPP(V)</code></p>
6581</li>
6582<li>
6583<p><code>BOOST_PREDEF_MAKE_10_VRR000(V)</code></p>
6584</li>
6585<li>
6586<p><code>BOOST_PREDEF_MAKE_10_VV00(V)</code></p>
6587</li>
6588<li>
6589<p><code>BOOST_PREDEF_MAKE_10_VVRR(V)</code></p>
6590</li>
6591<li>
6592<p><code>BOOST_PREDEF_MAKE_10_VVRRP(V)</code></p>
6593</li>
6594<li>
6595<p><code>BOOST_PREDEF_MAKE_10_VVRRPP(V)</code></p>
6596</li>
6597<li>
6598<p><code>BOOST_PREDEF_MAKE_10_VVRRPPP(V)</code></p>
6599</li>
6600<li>
6601<p><code>BOOST_PREDEF_MAKE_10_VVRR0PP00(V)</code></p>
6602</li>
6603<li>
6604<p><code>BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)</code></p>
6605</li>
6606<li>
6607<p><code>BOOST_PREDEF_MAKE_10_VVRR00PP00(V)</code></p>
6608</li>
6609</ul>
6610</div>
6611</div>
6612<div class="sect3">
6613<h4 id="_boost_predef_make_date_macros"><a class="anchor" href="#_boost_predef_make_date_macros"></a>4.9.3. <code>BOOST_PREDEF_MAKE_*..</code> date macros</h4>
6614<div class="paragraph">
6615<p>Date decomposition macros return a date in the relative to the 1970
6616Epoch date. If the month is not available, January 1st is used as the month and day.
6617If the day is not available, but the month is, the 1st of the month is used as the day.</p>
6618</div>
6619<div class="ulist">
6620<ul>
6621<li>
6622<p><code>BOOST_PREDEF_MAKE_DATE(Y,M,D)</code></p>
6623</li>
6624<li>
6625<p><code>BOOST_PREDEF_MAKE_YYYYMMDD(V)</code></p>
6626</li>
6627<li>
6628<p><code>BOOST_PREDEF_MAKE_YYYY(V)</code></p>
6629</li>
6630<li>
6631<p><code>BOOST_PREDEF_MAKE_YYYYMM(V)</code></p>
6632</li>
6633</ul>
6634</div>
6635</div>
6636</div>
6637</div>
6638</div>
6639<div class="sect1">
6640<h2 id="_check_utilities"><a class="anchor" href="#_check_utilities"></a>5. Check Utilities</h2>
6641<div class="sectionbody">
6642<div class="paragraph">
6643<p>The <code>predef_check</code> utility provides a facility for building a
6644program that will check a given set of expressions against
6645the definitions it detected when it was built.</p>
6646</div>
6647<div class="sect2">
6648<h3 id="_predef_check_programs"><a class="anchor" href="#_predef_check_programs"></a>5.1. <code>predef_check</code> programs</h3>
6649<div class="paragraph">
6650<p>Even though there is only one <code>predef_check</code> program, there
6651are variations for each of the languages that are detected
6652by Predef to match the convention for sources files. For all
6653of them one invokes with a list of expression arguments. The
6654expressions are evaluated within the context of the particular
6655<code>predef_check</code> program and if they all are true zero (0) is returned.
6656Otherwise the index of the first false expression is returned.</p>
6657</div>
6658<div class="paragraph">
6659<p>The expression syntax is simple:</p>
6660</div>
6661<div class="listingblock">
6662<div class="content">
6663<pre class="pygments highlight"><code data-lang="jam"><span></span>predef-definition<span class="tok-w"> </span>[<span class="tok-w"> </span>relational-operator<span class="tok-w"> </span>version-value<span class="tok-w"> </span>]<span class="tok-w"></span></code></pre>
6664</div>
6665</div>
6666<div class="paragraph">
6667<p><em>predef-definition</em> can be any of the Predef definitions. For
6668example <code>BOOST_COMP_GCC</code>.</p>
6669</div>
6670<div class="paragraph">
6671<p><em>relational-operator</em> can be any of: <code>&gt;</code>, <code>&lt;</code>, <code>&gt;=</code>, <code>&#8656;</code>,
6672<code>==</code> and <code>!=</code>.</p>
6673</div>
6674<div class="paragraph">
6675<p><em>version-number</em> can be a full or partial version triplet value.
6676If it&#8217;s a partial version triple it is completed with zeros. That
6677is <code>x.y</code> is equivalent to <code>x.y.0</code> and <code>x</code> is equivalent to
6678<code>x.0.0</code>.</p>
6679</div>
6680<div class="paragraph">
6681<p>The <em>relations-operator</em> and <em>version-number</em> can be omitted. In
6682which case it is equivalent to:</p>
6683</div>
6684<div class="listingblock">
6685<div class="content">
6686<pre class="pygments highlight"><code data-lang="jam"><span></span>predef-definition<span class="tok-w"> </span>&gt;<span class="tok-w"> </span>0.0.0<span class="tok-w"></span></code></pre>
6687</div>
6688</div>
6689</div>
6690<div class="sect2">
6691<h3 id="_using_with_boost_build"><a class="anchor" href="#_using_with_boost_build"></a>5.2. Using with Boost.Build</h3>
6692<div class="paragraph">
6693<p>You can use the <code>predef_check</code> programs directly from Boost Build
6694to configure target requirements. This is useful for controlling
6695what gets built as part of your project based on the detailed
6696version information available in Predef. The basic use is simple:</p>
6697</div>
6698<div class="listingblock">
6699<div class="content">
6700<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-nb">import</span><span class="tok-w"> </span>path-to-predef-src/tools/check/predef<span class="tok-w"></span>
6701<span class="tok-w">    </span>:<span class="tok-w"> </span>check<span class="tok-w"> </span>require<span class="tok-w"></span>
6702<span class="tok-w">    </span>:<span class="tok-w"> </span>predef-check<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>;<span class="tok-w"></span>
6703
6704<span class="tok-nb">exe</span><span class="tok-w"> </span>my_windows_program<span class="tok-w"> </span>:<span class="tok-w"> </span>windows_source.cpp<span class="tok-w"></span>
6705<span class="tok-w">    </span>:<span class="tok-w"> </span>[<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>&quot;BOOST_OS_WINDOWS&quot;<span class="tok-w"> </span>]<span class="tok-w"> </span>;<span class="tok-w"></span></code></pre>
6706</div>
6707</div>
6708<div class="paragraph">
6709<p>That simple use case will skip building the <code>my_windows_program</code>
6710unless one is building for Windows. Like the direct <code>predef_check</code>
6711you can pass multiple expressions using relational comparisons.
6712For example:</p>
6713</div>
6714<div class="listingblock">
6715<div class="content">
6716<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-nb">import</span><span class="tok-w"> </span>path-to-predef-src/tools/check/predef<span class="tok-w"></span>
6717<span class="tok-w">    </span>:<span class="tok-w"> </span>check<span class="tok-w"> </span>require<span class="tok-w"></span>
6718<span class="tok-w">    </span>:<span class="tok-w"> </span>predef-check<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>;<span class="tok-w"></span>
6719
6720<span class="tok-nb">lib</span><span class="tok-w"> </span>my_special_lib<span class="tok-w"> </span>:<span class="tok-w"> </span>source.cpp<span class="tok-w"></span>
6721<span class="tok-w">    </span>:<span class="tok-w"> </span>[<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>&quot;BOOST_OS_WINDOWS<span class="tok-w"> </span>!=<span class="tok-w"> </span>0&quot;<span class="tok-w"> </span>&quot;BOOST_OS_VMS<span class="tok-w"> </span>!=<span class="tok-w"> </span>0&quot;]<span class="tok-w"> </span>;<span class="tok-w"></span></code></pre>
6722</div>
6723</div>
6724<div class="paragraph">
6725<p>And in that case the <code>my_special_lib</code> is built only when the OS is
6726not Windows or VMS. The <code>requires</code> rule is a special case of the
6727<code>check</code> rule. And is defined in terms of it:</p>
6728</div>
6729<div class="listingblock">
6730<div class="content">
6731<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-k">rule</span><span class="tok-w"> </span><span class="tok-nf">require</span><span class="tok-w"> </span><span class="tok-p">(</span><span class="tok-w"> </span><span class="tok-nv">expressions</span><span class="tok-w"> </span><span class="tok-p">+</span><span class="tok-w"> </span><span class="tok-p">:</span><span class="tok-w"> </span><span class="tok-nv">language</span><span class="tok-w"> </span><span class="tok-p">?</span><span class="tok-w"> </span><span class="tok-p">)</span><span class="tok-w"></span>
6732{<span class="tok-w"></span>
6733<span class="tok-w">    </span><span class="tok-k">return</span><span class="tok-w"> </span>[<span class="tok-w"> </span>check<span class="tok-w"> </span><span class="tok-si">$(expressions)</span><span class="tok-w"> </span>:<span class="tok-w"> </span><span class="tok-si">$(language)</span><span class="tok-w"> </span>:<span class="tok-w"> </span>:<span class="tok-w"> </span><span class="tok-na">&lt;build&gt;</span>no<span class="tok-w"> </span>]<span class="tok-w"> </span>;<span class="tok-w"></span>
6734}<span class="tok-w"></span></code></pre>
6735</div>
6736</div>
6737<div class="paragraph">
6738<p>The expression can also use explicit "and", "or" logical operators
6739to for more complex checks:</p>
6740</div>
6741<div class="listingblock">
6742<div class="content">
6743<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-nb">import</span><span class="tok-w"> </span>path-to-predef-src/tools/check/predef<span class="tok-w"></span>
6744<span class="tok-w">    </span>:<span class="tok-w"> </span>check<span class="tok-w"> </span>require<span class="tok-w"></span>
6745<span class="tok-w">    </span>:<span class="tok-w"> </span>predef-check<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>;<span class="tok-w"></span>
6746
6747<span class="tok-nb">lib</span><span class="tok-w"> </span>my_special_lib<span class="tok-w"> </span>:<span class="tok-w"> </span>source.cpp<span class="tok-w"></span>
6748<span class="tok-w">    </span>:<span class="tok-w"> </span>[<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>&quot;BOOST_OS_WINDOWS&quot;<span class="tok-w"> </span>or<span class="tok-w"> </span>&quot;BOOST_OS_VMS&quot;]<span class="tok-w"> </span>;<span class="tok-w"></span></code></pre>
6749</div>
6750</div>
6751<div class="paragraph">
6752<p>You can use the <code>check</code> rule for more control and to implement
6753something other than control of what gets built. The definition
6754for the <code>check</code> rule is:</p>
6755</div>
6756<div class="listingblock">
6757<div class="content">
6758<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-k">rule</span><span class="tok-w"> </span><span class="tok-nf">check</span><span class="tok-w"> </span><span class="tok-p">(</span><span class="tok-w"> </span><span class="tok-nv">expressions</span><span class="tok-w"> </span><span class="tok-p">+</span><span class="tok-w"> </span><span class="tok-p">:</span><span class="tok-w"> </span><span class="tok-nv">language</span><span class="tok-w"> </span><span class="tok-p">?</span><span class="tok-w"> </span><span class="tok-p">:</span><span class="tok-w"> </span><span class="tok-nv">true-properties</span><span class="tok-w"> </span><span class="tok-p">*</span><span class="tok-w"> </span><span class="tok-p">:</span><span class="tok-w"> </span><span class="tok-nv">false-properties</span><span class="tok-w"> </span><span class="tok-p">*</span><span class="tok-w"> </span><span class="tok-p">)</span><span class="tok-w"></span></code></pre>
6759</div>
6760</div>
6761<div class="paragraph">
6762<p>When invoked as a requirement of a Boost Build target this rule
6763will add the <code>true-properties</code> to the target if all the <code>expressions</code>
6764evaluate to true. Otherwise the <code>false-properties</code> get added as
6765requirements. For example you could use it to enable or disable
6766features in your programs:</p>
6767</div>
6768<div class="listingblock">
6769<div class="content">
6770<pre class="pygments highlight"><code data-lang="jam"><span></span><span class="tok-nb">import</span><span class="tok-w"> </span>path-to-predef-src/tools/check/predef<span class="tok-w"></span>
6771<span class="tok-w">    </span>:<span class="tok-w"> </span>check<span class="tok-w"> </span>require<span class="tok-w"></span>
6772<span class="tok-w">    </span>:<span class="tok-w"> </span>predef-check<span class="tok-w"> </span>predef-require<span class="tok-w"> </span>;<span class="tok-w"></span>
6773
6774<span class="tok-nb">exe</span><span class="tok-w"> </span>my_special_exe<span class="tok-w"> </span>:<span class="tok-w"> </span>source.cpp<span class="tok-w"></span>
6775<span class="tok-w">    </span>:<span class="tok-w"> </span>[<span class="tok-w"> </span>predef-check<span class="tok-w"> </span>&quot;BOOST_OS_WINDOWS<span class="tok-w"> </span>==<span class="tok-w"> </span>0&quot;<span class="tok-w"></span>
6776<span class="tok-w">        </span>:<span class="tok-w"> </span>:<span class="tok-w"> </span><span class="tok-na">&lt;define&gt;</span>ENABLE_WMF=0<span class="tok-w"></span>
6777<span class="tok-w">        </span>:<span class="tok-w"> </span><span class="tok-na">&lt;define&gt;</span>ENABLE_WMF=1<span class="tok-w"> </span>]<span class="tok-w"> </span>;<span class="tok-w"></span></code></pre>
6778</div>
6779</div>
6780<div class="paragraph">
6781<p>For both <code>check</code> and <code>require</code> the <code>language</code> argument controls
6782which variant of the <code>predef_check</code> program is used to check the
6783expressions. It defaults to "c++", but can be any of: "c", "cpp",
6784"objc", and "objcpp".</p>
6785</div>
6786</div>
6787</div>
6788</div>
6789<div class="sect1">
6790<h2 id="_history"><a class="anchor" href="#_history"></a>6. History</h2>
6791<div class="sectionbody">
6792<div class="sect2">
6793<h3 id="_1_11"><a class="anchor" href="#_1_11"></a>6.1. 1.11</h3>
6794<div class="ulist">
6795<ul>
6796<li>
6797<p>Add <code>BOOST_ARCH_RISCV</code>. (from Andreas Schwab)</p>
6798</li>
6799<li>
6800<p>Add RISC-V endian detection. (from Thomas Petazzoni)</p>
6801</li>
6802<li>
6803<p>Convert documentation to AsciiDoctor format.</p>
6804</li>
6805<li>
6806<p>Document correct versions for C++ standard.</p>
6807</li>
6808<li>
6809<p>Fix compile error from not available header when building in WinCE.</p>
6810</li>
6811<li>
6812<p>Remove deprecated <code>BOOST_OS_ANDROID</code>.</p>
6813</li>
6814<li>
6815<p>Fix compile for Wine. (Kevin Puetz)</p>
6816</li>
6817</ul>
6818</div>
6819</div>
6820<div class="sect2">
6821<h3 id="_1_10"><a class="anchor" href="#_1_10"></a>6.2. 1.10</h3>
6822<div class="ulist">
6823<ul>
6824<li>
6825<p>Fix bad include of sub-BSD os headers from main BSD header.</p>
6826</li>
6827<li>
6828<p>Fix use of deprecated <code>TARGET_IPHONE_SIMULATOR</code> instead of newer
6829<code>TARGET_OS_SIMULATOR</code>.</p>
6830</li>
6831<li>
6832<p>Add <code>BOOST_PLAT_ANDROID</code> to resolve conflict between Linux and Android
6833OS predefs. The <code>BOOST_OS_ANDROID</code> predef is now deprecated and will be
6834removed in a future release.</p>
6835</li>
6836<li>
6837<p>Add support for consuming Predef as a CMake project.</p>
6838</li>
6839<li>
6840<p>Add support for consuming Predef as a standalone B2 project.</p>
6841</li>
6842</ul>
6843</div>
6844</div>
6845<div class="sect2">
6846<h3 id="_1_9"><a class="anchor" href="#_1_9"></a>6.3. 1.9</h3>
6847<div class="ulist">
6848<ul>
6849<li>
6850<p>Fixes for <code>BOOST_COMP_NVCC*</code> predefs. (from Benjamin Worpitz)</p>
6851</li>
6852<li>
6853<p>Add specific version information for Cygwin OS predef. (from James E. King III)</p>
6854</li>
6855</ul>
6856</div>
6857</div>
6858<div class="sect2">
6859<h3 id="_1_8"><a class="anchor" href="#_1_8"></a>6.4. 1.8</h3>
6860<div class="ulist">
6861<ul>
6862<li>
6863<p>Add support for __ARM_ARCH macro. (from Tim Blechmann)</p>
6864</li>
6865<li>
6866<p>Add detection for PTX architecture. (from Benjamin Worpitz)</p>
6867</li>
6868<li>
6869<p>Add nvcc compiler detection. (from Benjamin Worpitz)</p>
6870</li>
6871<li>
6872<p>Add support for detecting CUDA. (from Benjamin Worpitz)</p>
6873</li>
6874<li>
6875<p>Remove reference to obsolete BOOST_ARCH_AMD64. (from Peter Kolbus)</p>
6876</li>
6877</ul>
6878</div>
6879</div>
6880<div class="sect2">
6881<h3 id="_1_7"><a class="anchor" href="#_1_7"></a>6.5. 1.7</h3>
6882<div class="ulist">
6883<ul>
6884<li>
6885<p>Fix BOOST_ARCH_PARISK/BOOST_ARCH_PARISC typo.</p>
6886</li>
6887<li>
6888<p>Improved Windows Universal Platform detection. (from James E. King, III)</p>
6889</li>
6890<li>
6891<p>Add detection for CloudABI with cloudlibc. (from James E. King, III)</p>
6892</li>
6893</ul>
6894</div>
6895</div>
6896<div class="sect2">
6897<h3 id="_1_6"><a class="anchor" href="#_1_6"></a>6.6. 1.6</h3>
6898<div class="ulist">
6899<ul>
6900<li>
6901<p>Fix Intel C/C++ version 9999 detection to be 12.1.0.</p>
6902</li>
6903<li>
6904<p>Addition of <code>BOOST_PREDEF_WORKAROUND</code> and <code>BOOST_PREDEF_TESTED_AT</code> macros
6905for defect workarounds and detection.</p>
6906</li>
6907<li>
6908<p>Add ARM64 MSVC SIMD detection. (from Minmin Gong)</p>
6909</li>
6910<li>
6911<p>Add detection of iOS simulator vs device as a platform choice. (from Ruslan
6912Baratov)</p>
6913</li>
6914<li>
6915<p>Fix MinGW incorrect header guard. (from Ruslan Baratov)</p>
6916</li>
6917</ul>
6918</div>
6919</div>
6920<div class="sect2">
6921<h3 id="_1_5"><a class="anchor" href="#_1_5"></a>6.7. 1.5</h3>
6922<div class="ulist">
6923<ul>
6924<li>
6925<p>Fix Intel C/C++ compiler version specification.</p>
6926</li>
6927<li>
6928<p>Add <code>BOOST_VERSION_NUMBER_MAJOR</code>, <code>BOOST_VERSION_NUMBER_MINOR</code>,
6929<code>BOOST_VERSION_NUMBER_PATCH</code> macros to extract components from valid version
6930numbers.</p>
6931</li>
6932<li>
6933<p>Change VS version numbering. Version after VS2015 will use the compiler
6934version instead of the varied product versions.</p>
6935</li>
6936</ul>
6937</div>
6938</div>
6939<div class="sect2">
6940<h3 id="_1_4_1"><a class="anchor" href="#_1_4_1"></a>6.8. 1.4.1</h3>
6941<div class="ulist">
6942<ul>
6943<li>
6944<p>Small fixes for some redefinition errors, and mispelled macros.</p>
6945</li>
6946<li>
6947<p>Slightly rearrangement of structure to comply with current library requirements.</p>
6948</li>
6949</ul>
6950</div>
6951</div>
6952<div class="sect2">
6953<h3 id="_1_4"><a class="anchor" href="#_1_4"></a>6.9. 1.4</h3>
6954<div class="ulist">
6955<ul>
6956<li>
6957<p>Add detection of SIMD hardware. With the addition of the <code>BOOST_HW_*</code>
6958category (from Charly Chevalier).</p>
6959</li>
6960<li>
6961<p>Add compile only version of check utilities to address cross-compile
6962use cases. And changed the BBv2 check support to use compile only checks.</p>
6963</li>
6964<li>
6965<p>Fix test warnings.</p>
6966</li>
6967<li>
6968<p>Fix typos on <code>AVAILABLE</code> macros for Windows Platform. (from Vemund Handeland)</p>
6969</li>
6970</ul>
6971</div>
6972</div>
6973<div class="sect2">
6974<h3 id="_1_3"><a class="anchor" href="#_1_3"></a>6.10. 1.3</h3>
6975<div class="ulist">
6976<ul>
6977<li>
6978<p>Fix many problems with <code>predef_check</code> functionality.</p>
6979</li>
6980<li>
6981<p>Update SunPro detection to accommodate latest version of compiler from Oracle.</p>
6982</li>
6983<li>
6984<p>Addition of Travis-CI and Appveyor testing.</p>
6985</li>
6986<li>
6987<p>Add <code>and</code> and <code>or</code> logical operators for <code>predef_check</code> expression on the Boost Build side.</p>
6988</li>
6989<li>
6990<p>Fix <code>BOOST_ARCH_PARISC</code> to correctly spelled name (from Graham Hanson).</p>
6991</li>
6992<li>
6993<p>Fix <code>MAKE_YYYYM</code> macros to correctly limit the month (from rick68).</p>
6994</li>
6995</ul>
6996</div>
6997</div>
6998<div class="sect2">
6999<h3 id="_1_2"><a class="anchor" href="#_1_2"></a>6.11. 1.2</h3>
7000<div class="ulist">
7001<ul>
7002<li>
7003<p>Account for skip in Visual Studio product version vs. compiler version.
7004This supports version of VS 2015 an onward.</p>
7005</li>
7006<li>
7007<p>Add detection of Haiku OS (from Jessica Hamilton).</p>
7008</li>
7009<li>
7010<p>Some fixes to endian detection for Android (from mstahl-at-redhat.com).</p>
7011</li>
7012<li>
7013<p>Add missing <code>BOOST_PREDEF_MAKE_0X_VVRRPP</code> macro (from Erik Lindahl).</p>
7014</li>
7015<li>
7016<p>Add <code>predef_check</code> program and BBv2 integration for build configuration
7017checks.</p>
7018</li>
7019</ul>
7020</div>
7021</div>
7022<div class="sect2">
7023<h3 id="_1_1"><a class="anchor" href="#_1_1"></a>6.12. 1.1</h3>
7024<div class="ulist">
7025<ul>
7026<li>
7027<p>Addition of <code>BOOST_PLAT_*</code> platform definitions for MinGW and
7028Windows platform variants.</p>
7029</li>
7030<li>
7031<p>Detection of ARM architecture for Windows compilers to target
7032mobile devices of Windows 8.</p>
7033</li>
7034<li>
7035<p>Improved ARM detection for 64 bit ARM.</p>
7036</li>
7037<li>
7038<p>Added detection of iOS an an operating system.</p>
7039</li>
7040<li>
7041<p>Improved detection of endianess on some platforms.</p>
7042</li>
7043<li>
7044<p>Addition of exclusive plus emulated definitions for platform
7045and compiler detection.</p>
7046</li>
7047</ul>
7048</div>
7049<div class="admonitionblock warning">
7050<table>
7051<tr>
7052<td class="icon">
7053<div class="title">⚠</div>
7054</td>
7055<td class="content">
7056The big change for this version is the restructuring of the
7057definitions to avoid duplicate definitions in one category. That is, only one
7058<code>BOOST_OS_*</code>, <code>BOOST_COMP_*</code>, and <code>BOOST_PLAT_*</code> variant will be detected
7059(except for sub-categories).
7060</td>
7061</tr>
7062</table>
7063</div>
7064</div>
7065</div>
7066</div>
7067<div class="sect1">
7068<h2 id="_to_do"><a class="anchor" href="#_to_do"></a>7. To Do</h2>
7069<div class="sectionbody">
7070<div class="ulist">
7071<ul>
7072<li>
7073<p>Improve reference documentation.</p>
7074</li>
7075</ul>
7076</div>
7077</div>
7078</div>
7079<div class="sect1">
7080<h2 id="_acknowledgements"><a class="anchor" href="#_acknowledgements"></a>8. Acknowledgements</h2>
7081<div class="sectionbody">
7082<div class="paragraph">
7083<p>The comprehensiveness of this library would not be
7084possible without the existence of the indispensable
7085resource that is the
7086<a href="http://sourceforge.net/p/predef/">Pre-defined C/C++ Compiler Macros</a>
7087Project. It was, and continues to be, the primary source
7088of the definitions that make up this library. Thanks
7089to Bjorn Reese and all the volunteers that make that
7090resource possible.</p>
7091</div>
7092<div class="paragraph">
7093<p>This library would be an incoherent mess if it weren&#8217;t for
7094Boost community that provided invaluable feedback for the
7095eight years that it took to polish into a useable form.
7096In particular I would like to thank: Mathias Gaunard,
7097Robert Stewart, Joël Lamotte, Lars Viklund, Nathan Ridge,
7098Artyom Beilis, Joshua Boyce, Gottlob Frege, Thomas Heller,
7099Edward Diener, Dave Abrahams, Iain Denniston, Dan Price,
7100Ioannis Papadopoulos, and Robert Ramey. And thanks to
7101Joel Falcou for managing the review of this library.</p>
7102</div>
7103</div>
7104</div>
7105<div class="sect1">
7106<h2 id="_colophon"><a class="anchor" href="#_colophon"></a>Colophon</h2>
7107<div class="sectionbody">
7108<div class="paragraph">
7109<p>Distributed under the Boost Software License, Version 1.0.
7110(See accompanying file LICENSE_1_0.txt or copy at
7111<a href="https://www.boost.org/LICENSE_1_0.txt" class="bare">https://www.boost.org/LICENSE_1_0.txt</a>)</p>
7112</div>
7113<div class="paragraph">
7114<p>Copyright 2005-2020 Rene Rivera; Copyright 2015 Charly Chevalier; Copyright 2015 Joel Falcou</p>
7115</div>
7116</div>
7117</div>
7118</div>
7119</body>
7120</html>