2024-11-05 18:52:17 +01:00
<!doctype html>
< html lang = "en" class = "no-js" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width,initial-scale=1" >
< meta name = "description" content = "The quantities and units library for C++" >
< meta name = "author" content = "mp-units Team" >
< link rel = "canonical" href = "https://mpusz.github.io/mp-units/HEAD/getting_started/quick_start/" >
< link rel = "prev" href = "../introduction/" >
< link rel = "next" href = "../look_and_feel/" >
< link rel = "alternate" type = "application/rss+xml" title = "RSS feed" href = "../../feed_rss_created.xml" >
< link rel = "alternate" type = "application/rss+xml" title = "RSS feed of updated content" href = "../../feed_rss_updated.xml" >
< link rel = "icon" href = "../../assets/images/mp-units-color.svg" >
2024-11-05 18:44:52 +00:00
< meta name = "generator" content = "mkdocs-1.6.1, mkdocs-material-9.5.44" >
2024-11-05 18:52:17 +01:00
< title > Quick Start - mp-units</ title >
< link rel = "stylesheet" href = "../../assets/stylesheets/main.0253249f.min.css" >
< link rel = "stylesheet" href = "../../assets/stylesheets/palette.06af60db.min.css" >
< link rel = "preconnect" href = "https://fonts.gstatic.com" crossorigin >
< link rel = "stylesheet" href = "https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback" >
< style >: root { --md-text-font : "Roboto" ; --md-code-font : "Roboto Mono" }</ style >
< link rel = "stylesheet" href = "../../stylesheets/extra.css" >
< script > __md_scope = new URL ( "../.." , location ), __md_hash = e =>[... e ]. reduce ((( e , _ )=>( e << 5 ) - e + _ . charCodeAt ( 0 )), 0 ), __md_get = ( e , _ = localStorage , t = __md_scope )=> JSON . parse ( _ . getItem ( t . pathname + "." + e )), __md_set = ( e , _ , t = localStorage , a = __md_scope )=>{ try { t . setItem ( a . pathname + "." + e , JSON . stringify ( _ ))} catch ( e ){}}</ script >
< meta property = "og:type" content = "website" >
< meta property = "og:title" content = "Quick Start - mp-units" >
< meta property = "og:description" content = "The quantities and units library for C++" >
< meta property = "og:image" content = "https://mpusz.github.io/mp-units/HEAD/assets/images/social/getting_started/quick_start.png" >
< meta property = "og:image:type" content = "image/png" >
< meta property = "og:image:width" content = "1200" >
< meta property = "og:image:height" content = "630" >
< meta property = "og:url" content = "https://mpusz.github.io/mp-units/HEAD/getting_started/quick_start/" >
< meta name = "twitter:card" content = "summary_large_image" >
< meta name = "twitter:title" content = "Quick Start - mp-units" >
< meta name = "twitter:description" content = "The quantities and units library for C++" >
< meta name = "twitter:image" content = "https://mpusz.github.io/mp-units/HEAD/assets/images/social/getting_started/quick_start.png" >
</ head >
< body dir = "ltr" data-md-color-scheme = "default" data-md-color-primary = "indigo" data-md-color-accent = "indigo" >
< input class = "md-toggle" data-md-toggle = "drawer" type = "checkbox" id = "__drawer" autocomplete = "off" >
< input class = "md-toggle" data-md-toggle = "search" type = "checkbox" id = "__search" autocomplete = "off" >
< label class = "md-overlay" for = "__drawer" ></ label >
< div data-md-component = "skip" >
< a href = "#quick-start" class = "md-skip" >
Skip to content
</ a >
</ div >
< div data-md-component = "announce" >
</ div >
< div data-md-color-scheme = "default" data-md-component = "outdated" hidden >
< aside class = "md-banner md-banner--warning" >
< div class = "md-banner__inner md-grid md-typeset" >
You're not viewing the latest version.
< a href = "../../.." >
< strong > Click here to go to latest.</ strong >
</ a >
</ div >
< script > var el = document . querySelector ( "[data-md-component=outdated]" ), outdated = __md_get ( "__outdated" , sessionStorage ); ! 0 === outdated && el && ( el . hidden =! 1 )</ script >
</ aside >
</ div >
< header class = "md-header" data-md-component = "header" >
< nav class = "md-header__inner md-grid" aria-label = "Header" >
< a href = "../.." title = "mp-units" class = "md-header__button md-logo" aria-label = "mp-units" data-md-component = "logo" >
< img src = "../../assets/images/mp-units-transparent-white.svg" alt = "logo" >
</ a >
< label class = "md-header__button md-icon" for = "__drawer" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z" /></ svg >
</ label >
< div class = "md-header__title" data-md-component = "header-title" >
< div class = "md-header__ellipsis" >
< div class = "md-header__topic" >
< span class = "md-ellipsis" >
mp-units
</ span >
</ div >
< div class = "md-header__topic" data-md-component = "header-topic" >
< span class = "md-ellipsis" >
Quick Start
</ span >
</ div >
</ div >
</ div >
< form class = "md-header__option" data-md-component = "palette" >
< input class = "md-option" data-md-color-media = "(prefers-color-scheme)" data-md-color-scheme = "default" data-md-color-primary = "indigo" data-md-color-accent = "indigo" aria-label = "Switch to light mode" type = "radio" name = "__palette" id = "__palette_0" >
< label class = "md-header__button md-icon" title = "Switch to light mode" for = "__palette_1" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4a5 5 0 0 0 5-5 5 5 0 0 0-5-5" /></ svg >
</ label >
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: light)" data-md-color-scheme = "default" data-md-color-primary = "custom" data-md-color-accent = "custom" aria-label = "Switch to dark mode" type = "radio" name = "__palette" id = "__palette_1" >
< label class = "md-header__button md-icon" title = "Switch to dark mode" for = "__palette_2" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z" /></ svg >
</ label >
< input class = "md-option" data-md-color-media = "(prefers-color-scheme: dark)" data-md-color-scheme = "slate" data-md-color-primary = "black" data-md-color-accent = "custom" aria-label = "Switch to system preference" type = "radio" name = "__palette" id = "__palette_2" >
< label class = "md-header__button md-icon" title = "Switch to system preference" for = "__palette_0" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31" /></ svg >
</ label >
</ form >
< script > var palette = __md_get ( "__palette" ); if ( palette && palette . color ){ if ( "(prefers-color-scheme)" === palette . color . media ){ var media = matchMedia ( "(prefers-color-scheme: light)" ), input = document . querySelector ( media . matches ? "[data-md-color-media='(prefers-color-scheme: light)']" : "[data-md-color-media='(prefers-color-scheme: dark)']" ); palette . color . media = input . getAttribute ( "data-md-color-media" ), palette . color . scheme = input . getAttribute ( "data-md-color-scheme" ), palette . color . primary = input . getAttribute ( "data-md-color-primary" ), palette . color . accent = input . getAttribute ( "data-md-color-accent" )} for ( var [ key , value ] of Object . entries ( palette . color )) document . body . setAttribute ( "data-md-color-" + key , value )}</ script >
< label class = "md-header__button md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5" /></ svg >
</ label >
< div class = "md-search" data-md-component = "search" role = "dialog" >
< label class = "md-search__overlay" for = "__search" ></ label >
< div class = "md-search__inner" role = "search" >
< form class = "md-search__form" name = "search" >
< input type = "text" class = "md-search__input" name = "query" aria-label = "Search" placeholder = "Search" autocapitalize = "off" autocorrect = "off" autocomplete = "off" spellcheck = "false" data-md-component = "search-query" required >
< label class = "md-search__icon md-icon" for = "__search" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5" /></ svg >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z" /></ svg >
</ label >
< nav class = "md-search__options" aria-label = "Search" >
< a href = "javascript:void(0)" class = "md-search__icon md-icon" title = "Share" aria-label = "Share" data-clipboard data-clipboard-text = "" data-md-component = "search-share" tabindex = "-1" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08" /></ svg >
</ a >
< button type = "reset" class = "md-search__icon md-icon" title = "Clear" aria-label = "Clear" tabindex = "-1" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" /></ svg >
</ button >
</ nav >
< div class = "md-search__suggest" data-md-component = "search-suggest" ></ div >
</ form >
< div class = "md-search__output" >
< div class = "md-search__scrollwrap" tabindex = "0" data-md-scrollfix >
< div class = "md-search-result" data-md-component = "search-result" >
< div class = "md-search-result__meta" >
Initializing search
</ div >
< ol class = "md-search-result__list" role = "presentation" ></ ol >
</ div >
</ div >
</ div >
</ div >
</ div >
< div class = "md-header__source" >
< a href = "https://github.com/mpusz/mp-units" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81" /></ svg >
</ div >
< div class = "md-source__repository" >
mpusz/mp-units
</ div >
</ a >
</ div >
</ nav >
</ header >
< div class = "md-container" data-md-component = "container" >
< nav class = "md-tabs" aria-label = "Tabs" data-md-component = "tabs" >
< div class = "md-grid" >
< ul class = "md-tabs__list" >
< li class = "md-tabs__item" >
< a href = "../.." class = "md-tabs__link" >
Home
</ a >
</ li >
< li class = "md-tabs__item md-tabs__item--active" >
< a href = "../introduction/" class = "md-tabs__link" >
Getting Started
</ a >
</ li >
< li class = "md-tabs__item" >
< a href = "../../users_guide/terms_and_definitions/" class = "md-tabs__link" >
User's Guide
</ a >
</ li >
< li class = "md-tabs__item" >
< a href = "../../api_reference/" class = "md-tabs__link" >
API Reference
</ a >
</ li >
< li class = "md-tabs__item" >
< a href = "../../blog/" class = "md-tabs__link" >
Blog
</ a >
</ li >
< li class = "md-tabs__item" >
< a href = "../../release_notes/" class = "md-tabs__link" >
Release Notes
</ a >
</ li >
</ ul >
</ div >
</ nav >
< main class = "md-main" data-md-component = "main" >
< div class = "md-main__inner md-grid" >
< div class = "md-sidebar md-sidebar--primary" data-md-component = "sidebar" data-md-type = "navigation" >
< div class = "md-sidebar__scrollwrap" >
< div class = "md-sidebar__inner" >
< nav class = "md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label = "Navigation" data-md-level = "0" >
< label class = "md-nav__title" for = "__drawer" >
< a href = "../.." title = "mp-units" class = "md-nav__button md-logo" aria-label = "mp-units" data-md-component = "logo" >
< img src = "../../assets/images/mp-units-transparent-white.svg" alt = "logo" >
</ a >
mp-units
</ label >
< div class = "md-nav__source" >
< a href = "https://github.com/mpusz/mp-units" title = "Go to repository" class = "md-source" data-md-component = "source" >
< div class = "md-source__icon md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 448 512" > <!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--> < path d = "M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81" /></ svg >
</ div >
< div class = "md-source__repository" >
mpusz/mp-units
</ div >
</ a >
</ div >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../.." class = "md-nav__link" >
< span class = "md-ellipsis" >
Home
</ span >
</ a >
</ li >
< li class = "md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_2" checked >
< label class = "md-nav__link" for = "__nav_2" id = "__nav_2_label" tabindex = "" >
< span class = "md-ellipsis" >
Getting Started
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_2_label" aria-expanded = "true" >
< label class = "md-nav__title" for = "__nav_2" >
< span class = "md-nav__icon md-icon" ></ span >
Getting Started
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../introduction/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Introduction
</ span >
</ a >
</ li >
< li class = "md-nav__item md-nav__item--active" >
< input class = "md-nav__toggle md-toggle" type = "checkbox" id = "__toc" >
< label class = "md-nav__link md-nav__link--active" for = "__toc" >
< span class = "md-ellipsis" >
Quick Start
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< a href = "./" class = "md-nav__link md-nav__link--active" >
< span class = "md-ellipsis" >
Quick Start
</ span >
</ a >
< nav class = "md-nav md-nav--secondary" aria-label = "Table of contents" >
< label class = "md-nav__title" for = "__toc" >
< span class = "md-nav__icon md-icon" ></ span >
Table of contents
</ label >
< ul class = "md-nav__list" data-md-component = "toc" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "#quantities" class = "md-nav__link" >
< span class = "md-ellipsis" >
Quantities
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "#quantity-points" class = "md-nav__link" >
< span class = "md-ellipsis" >
Quantity points
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item" >
< a href = "../look_and_feel/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Look and Feel
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../project_structure/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Project Structure
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../cpp_compiler_support/" class = "md-nav__link" >
< span class = "md-ellipsis" >
C++ compiler support (API/ABI)
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../installation_and_usage/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Installation and Usage
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../contributing/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Contributing
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../faq/" class = "md-nav__link" >
< span class = "md-ellipsis" >
FAQ
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3" >
< label class = "md-nav__link" for = "__nav_3" id = "__nav_3_label" tabindex = "0" >
< span class = "md-ellipsis" >
User's Guide
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3" >
< span class = "md-nav__icon md-icon" ></ span >
User's Guide
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/terms_and_definitions/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Terms and Definitions
</ span >
</ a >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_2" >
< label class = "md-nav__link" for = "__nav_3_2" id = "__nav_3_2_label" tabindex = "0" >
< span class = "md-ellipsis" >
Framework Basics
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_2" >
< span class = "md-nav__icon md-icon" ></ span >
Framework Basics
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/interface_introduction/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Interface Introduction
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/design_overview/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Design Overview
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/systems_of_quantities/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Systems of Quantities
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/systems_of_units/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Systems of Units
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/simple_and_typed_quantities/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Simple and Typed Quantities
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/value_conversions/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Value Conversions
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/character_of_a_quantity/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Character of a Quantity
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/dimensionless_quantities/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Dimensionless Quantities
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/quantity_arithmetics/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Quantity Arithmetics
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/generic_interfaces/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Generic Interfaces
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/faster_than_lightspeed_constants/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Faster-than-lightspeed Constants
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/the_affine_space/" class = "md-nav__link" >
< span class = "md-ellipsis" >
The Affine Space
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/obtaining_metadata/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Obtaining Metadata
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/concepts/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Concepts
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/framework_basics/text_output/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Text Output
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_3" >
< label class = "md-nav__link" for = "__nav_3_3" id = "__nav_3_3_label" tabindex = "0" >
< span class = "md-ellipsis" >
Systems
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_3" >
< span class = "md-nav__icon md-icon" ></ span >
Systems
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/systems/introduction/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Introduction
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/systems/isq/" class = "md-nav__link" >
< span class = "md-ellipsis" >
International System of Quantities (ISQ)
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/systems/si/" class = "md-nav__link" >
< span class = "md-ellipsis" >
International System of Units (SI)
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/systems/strong_angular_system/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Strong Angular System
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/systems/natural_units/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Natural Units
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_4" >
< label class = "md-nav__link" for = "__nav_3_4" id = "__nav_3_4_label" tabindex = "0" >
< span class = "md-ellipsis" >
Use Cases
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_4_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_4" >
< span class = "md-nav__icon md-icon" ></ span >
Use Cases
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/pure_dimensional_analysis/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Pure Dimensional Analysis
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/working_with_legacy_interfaces/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Working with Legacy Interfaces
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/using_custom_representation_types/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Using Custom Representation Types
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/interoperability_with_other_libraries/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Interoperability with Other Libraries
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/extending_the_library/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Extending the Library
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/use_cases/wide_compatibility/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Wide Compatibility
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_5" >
< label class = "md-nav__link" for = "__nav_3_5" id = "__nav_3_5_label" tabindex = "0" >
< span class = "md-ellipsis" >
Examples
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_5_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_5" >
< span class = "md-nav__icon md-icon" ></ span >
Examples
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/examples/tags_index/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Tags Index
</ span >
</ a >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_5_2" >
< label class = "md-nav__link" for = "__nav_3_5_2" id = "__nav_3_5_2_label" tabindex = "0" >
< span class = "md-ellipsis" >
All Examples
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "3" aria-labelledby = "__nav_3_5_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_5_2" >
< span class = "md-nav__icon md-icon" ></ span >
All Examples
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../users_guide/examples/hello_units/" class = "md-nav__link" >
< span class = "md-ellipsis" >
hello_units
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/examples/avg_speed/" class = "md-nav__link" >
< span class = "md-ellipsis" >
avg_speed
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/examples/si_constants/" class = "md-nav__link" >
< span class = "md-ellipsis" >
si_constants
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../users_guide/examples/hw_voltage/" class = "md-nav__link" >
< span class = "md-ellipsis" >
hw_voltage
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_3_6" >
< label class = "md-nav__link" for = "__nav_3_6" id = "__nav_3_6_label" tabindex = "0" >
< span class = "md-ellipsis" >
Appendix
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_3_6_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_3_6" >
< span class = "md-nav__icon md-icon" ></ span >
Appendix
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../appendix/glossary/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Glossary
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../appendix/references/" class = "md-nav__link" >
< span class = "md-ellipsis" >
References
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item" >
< a href = "../../api_reference/" class = "md-nav__link" >
< span class = "md-ellipsis" >
API Reference
</ span >
</ a >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5" >
< div class = "md-nav__link md-nav__container" >
< a href = "../../blog/" class = "md-nav__link " >
< span class = "md-ellipsis" >
Blog
</ span >
</ a >
< label class = "md-nav__link " for = "__nav_5" id = "__nav_5_label" tabindex = "0" >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
</ div >
< nav class = "md-nav" data-md-level = "1" aria-labelledby = "__nav_5_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_5" >
< span class = "md-nav__icon md-icon" ></ span >
Blog
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5_2" >
< label class = "md-nav__link" for = "__nav_5_2" id = "__nav_5_2_label" tabindex = "0" >
< span class = "md-ellipsis" >
Archive
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_5_2_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_5_2" >
< span class = "md-nav__icon md-icon" ></ span >
Archive
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../blog/archive/2024/" class = "md-nav__link" >
< span class = "md-ellipsis" >
2024
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../blog/archive/2023/" class = "md-nav__link" >
< span class = "md-ellipsis" >
2023
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item md-nav__item--nested" >
< input class = "md-nav__toggle md-toggle " type = "checkbox" id = "__nav_5_3" >
< label class = "md-nav__link" for = "__nav_5_3" id = "__nav_5_3_label" tabindex = "0" >
< span class = "md-ellipsis" >
Categories
</ span >
< span class = "md-nav__icon md-icon" ></ span >
</ label >
< nav class = "md-nav" data-md-level = "2" aria-labelledby = "__nav_5_3_label" aria-expanded = "false" >
< label class = "md-nav__title" for = "__nav_5_3" >
< span class = "md-nav__icon md-icon" ></ span >
Categories
</ label >
< ul class = "md-nav__list" data-md-scrollfix >
< li class = "md-nav__item" >
< a href = "../../blog/category/metrology/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Metrology
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../blog/category/releases/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Releases
</ span >
</ a >
</ li >
< li class = "md-nav__item" >
< a href = "../../blog/category/wg21-updates/" class = "md-nav__link" >
< span class = "md-ellipsis" >
WG21 Updates
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ li >
</ ul >
</ nav >
</ li >
< li class = "md-nav__item" >
< a href = "../../release_notes/" class = "md-nav__link" >
< span class = "md-ellipsis" >
Release Notes
</ span >
</ a >
</ li >
</ ul >
</ nav >
</ div >
</ div >
</ div >
< div class = "md-content" data-md-component = "content" >
< article class = "md-content__inner md-typeset" >
< a href = "https://github.com/mpusz/mp-units/edit/master/docs/getting_started/quick_start.md" title = "Edit this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z" /></ svg >
</ a >
< a href = "https://github.com/mpusz/mp-units/raw/master/docs/getting_started/quick_start.md" title = "View source of this page" class = "md-content__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2" /></ svg >
</ a >
< h1 id = "quick-start" > Quick Start< a class = "headerlink" href = "#quick-start" title = "Permanent link" > ¶ </ a ></ h1 >
< p > This chapter provides a quick introduction to get you started with < strong > mp-units</ strong > .
Much more details can be found in our < a href = "../../users_guide/terms_and_definitions/" > User's Guide</ a > .</ p >
< h2 id = "quantities" > Quantities< a class = "headerlink" href = "#quantities" title = "Permanent link" > ¶ </ a ></ h2 >
< p > A < strong > quantity</ strong > is a concrete amount of a unit representing a quantity type of a specified dimension with a
specific representation. It is represented in the library with a < code > quantity</ code > class template.</ p >
< p > The < a href = "../../appendix/references/#SIBrochure" > SI Brochure</ a > says:</ p >
< div class = "admonition quote" >
< p class = "admonition-title" > SI Brochure</ p >
< p > The value of the quantity is the product of the number and the unit. The space between the number
and the unit is regarded as a multiplication sign (just as a space between units implies
multiplication).</ p >
</ div >
< p > Following the above, the value of a quantity in the < strong > mp-units</ strong > library is created by multiplying
a number with a predefined unit:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "1:2" >< input checked = "checked" id = "__tabbed_1_1" name = "__tabbed_1" type = "radio" />< input id = "__tabbed_1_2" name = "__tabbed_1" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_1_1" > C++ modules</ label >< label for = "__tabbed_1_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-0-1" >< a id = "__codelineno-0-1" name = "__codelineno-0-1" href = "#__codelineno-0-1" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-0-2" >< a id = "__codelineno-0-2" name = "__codelineno-0-2" href = "#__codelineno-0-2" ></ a >
</ span >< span id = "__span-0-3" >< a id = "__codelineno-0-3" name = "__codelineno-0-3" href = "#__codelineno-0-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-0-4" >< a id = "__codelineno-0-4" name = "__codelineno-0-4" href = "#__codelineno-0-4" ></ a >
</ span >< span id = "__span-0-5" >< a id = "__codelineno-0-5" name = "__codelineno-0-5" href = "#__codelineno-0-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "mi" > 42</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > ;</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-1-1" >< a id = "__codelineno-1-1" name = "__codelineno-1-1" href = "#__codelineno-1-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-1-2" >< a id = "__codelineno-1-2" name = "__codelineno-1-2" href = "#__codelineno-1-2" ></ a >
</ span >< span id = "__span-1-3" >< a id = "__codelineno-1-3" name = "__codelineno-1-3" href = "#__codelineno-1-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-1-4" >< a id = "__codelineno-1-4" name = "__codelineno-1-4" href = "#__codelineno-1-4" ></ a >
</ span >< span id = "__span-1-5" >< a id = "__codelineno-1-5" name = "__codelineno-1-5" href = "#__codelineno-1-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "mi" > 42</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > ;</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
< div class = "admonition info" >
< p class = "admonition-title" > Info</ p >
< p > In case someone doesn't like the multiply syntax or there is an ambiguity between < code > operator*</ code >
provided by this and other libraries, there are two other ways to create a quantity:</ p >
< ol >
< li >
< p >< code > delta</ code > construction helper:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "2:2" >< input checked = "checked" id = "__tabbed_2_1" name = "__tabbed_2" type = "radio" />< input id = "__tabbed_2_2" name = "__tabbed_2" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_2_1" > C++ modules</ label >< label for = "__tabbed_2_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-2-1" >< a id = "__codelineno-2-1" name = "__codelineno-2-1" href = "#__codelineno-2-1" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-2-2" >< a id = "__codelineno-2-2" name = "__codelineno-2-2" href = "#__codelineno-2-2" ></ a >
</ span >< span id = "__span-2-3" >< a id = "__codelineno-2-3" name = "__codelineno-2-3" href = "#__codelineno-2-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-2-4" >< a id = "__codelineno-2-4" name = "__codelineno-2-4" href = "#__codelineno-2-4" ></ a >
</ span >< span id = "__span-2-5" >< a id = "__codelineno-2-5" name = "__codelineno-2-5" href = "#__codelineno-2-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > delta</ span >< span class = "o" > < </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "o" > > </ span >< span class = "p" > (</ span >< span class = "mi" > 42</ span >< span class = "p" > );</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-3-1" >< a id = "__codelineno-3-1" name = "__codelineno-3-1" href = "#__codelineno-3-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-3-2" >< a id = "__codelineno-3-2" name = "__codelineno-3-2" href = "#__codelineno-3-2" ></ a >
</ span >< span id = "__span-3-3" >< a id = "__codelineno-3-3" name = "__codelineno-3-3" href = "#__codelineno-3-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-3-4" >< a id = "__codelineno-3-4" name = "__codelineno-3-4" href = "#__codelineno-3-4" ></ a >
</ span >< span id = "__span-3-5" >< a id = "__codelineno-3-5" name = "__codelineno-3-5" href = "#__codelineno-3-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > delta</ span >< span class = "o" > < </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "o" > > </ span >< span class = "p" > (</ span >< span class = "mi" > 42</ span >< span class = "p" > );</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
</ li >
< li >
< p > A two-parameter constructor:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "3:2" >< input checked = "checked" id = "__tabbed_3_1" name = "__tabbed_3" type = "radio" />< input id = "__tabbed_3_2" name = "__tabbed_3" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_3_1" > C++ modules</ label >< label for = "__tabbed_3_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-4-1" >< a id = "__codelineno-4-1" name = "__codelineno-4-1" href = "#__codelineno-4-1" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-4-2" >< a id = "__codelineno-4-2" name = "__codelineno-4-2" href = "#__codelineno-4-2" ></ a >
</ span >< span id = "__span-4-3" >< a id = "__codelineno-4-3" name = "__codelineno-4-3" href = "#__codelineno-4-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-4-4" >< a id = "__codelineno-4-4" name = "__codelineno-4-4" href = "#__codelineno-4-4" ></ a >
</ span >< span id = "__span-4-5" >< a id = "__codelineno-4-5" name = "__codelineno-4-5" href = "#__codelineno-4-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "p" > {</ span >< span class = "mi" > 42</ span >< span class = "p" > ,</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > };</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-5-1" >< a id = "__codelineno-5-1" name = "__codelineno-5-1" href = "#__codelineno-5-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-5-2" >< a id = "__codelineno-5-2" name = "__codelineno-5-2" href = "#__codelineno-5-2" ></ a >
</ span >< span id = "__span-5-3" >< a id = "__codelineno-5-3" name = "__codelineno-5-3" href = "#__codelineno-5-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-5-4" >< a id = "__codelineno-5-4" name = "__codelineno-5-4" href = "#__codelineno-5-4" ></ a >
</ span >< span id = "__span-5-5" >< a id = "__codelineno-5-5" name = "__codelineno-5-5" href = "#__codelineno-5-5" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "p" > {</ span >< span class = "mi" > 42</ span >< span class = "p" > ,</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > };</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
</ li >
</ ol >
</ div >
< p > The above creates an instance of < code > quantity< derived_unit< si::metre, per< si::second>> {}, int> </ code > .
The same can be obtained using optional unit symbols:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "4:2" >< input checked = "checked" id = "__tabbed_4_1" name = "__tabbed_4" type = "radio" />< input id = "__tabbed_4_2" name = "__tabbed_4" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_4_1" > C++ modules</ label >< label for = "__tabbed_4_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-6-1" >< a id = "__codelineno-6-1" name = "__codelineno-6-1" href = "#__codelineno-6-1" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-6-2" >< a id = "__codelineno-6-2" name = "__codelineno-6-2" href = "#__codelineno-6-2" ></ a >
</ span >< span id = "__span-6-3" >< a id = "__codelineno-6-3" name = "__codelineno-6-3" href = "#__codelineno-6-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-6-4" >< a id = "__codelineno-6-4" name = "__codelineno-6-4" href = "#__codelineno-6-4" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-6-5" >< a id = "__codelineno-6-5" name = "__codelineno-6-5" href = "#__codelineno-6-5" ></ a >
</ span >< span id = "__span-6-6" >< a id = "__codelineno-6-6" name = "__codelineno-6-6" href = "#__codelineno-6-6" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "mi" > 42</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "p" > ;</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-7-1" >< a id = "__codelineno-7-1" name = "__codelineno-7-1" href = "#__codelineno-7-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-7-2" >< a id = "__codelineno-7-2" name = "__codelineno-7-2" href = "#__codelineno-7-2" ></ a >
</ span >< span id = "__span-7-3" >< a id = "__codelineno-7-3" name = "__codelineno-7-3" href = "#__codelineno-7-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-7-4" >< a id = "__codelineno-7-4" name = "__codelineno-7-4" href = "#__codelineno-7-4" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-7-5" >< a id = "__codelineno-7-5" name = "__codelineno-7-5" href = "#__codelineno-7-5" ></ a >
</ span >< span id = "__span-7-6" >< a id = "__codelineno-7-6" name = "__codelineno-7-6" href = "#__codelineno-7-6" ></ a >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > q</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "mi" > 42</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "p" > ;</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
< div class = "admonition important" >
< p class = "admonition-title" > Important</ p >
< p > Unit symbols introduce a lot of short identifiers into the current scope, which may cause
naming collisions with unrelated but already existing identifiers in the code base.
This is why unit symbols are opt-in and typically should be imported only in the context
where they are being used (e.g., function scope).</ p >
< p > A user has several options here to choose from depending on the required scenario and possible
naming conflicts:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "5:4" >< input checked = "checked" id = "__tabbed_5_1" name = "__tabbed_5" type = "radio" />< input id = "__tabbed_5_2" name = "__tabbed_5" type = "radio" />< input id = "__tabbed_5_3" name = "__tabbed_5" type = "radio" />< input id = "__tabbed_5_4" name = "__tabbed_5" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_5_1" > using-directive</ label >< label for = "__tabbed_5_2" > using-declaration</ label >< label for = "__tabbed_5_3" > custom short identifier</ label >< label for = "__tabbed_5_4" > unit names</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< p > Explicitly "import" all of the symbols of a specific system of units from a dedicated
< code > unit_symbols</ code > namespace with a
< a href = "https://en.cppreference.com/w/cpp/language/namespace#Using-directives" > using-directive</ a > :</ p >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-8-1" >< a id = "__codelineno-8-1" name = "__codelineno-8-1" href = "#__codelineno-8-1" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-8-2" >< a id = "__codelineno-8-2" name = "__codelineno-8-2" href = "#__codelineno-8-2" ></ a >
</ span >< span id = "__span-8-3" >< a id = "__codelineno-8-3" name = "__codelineno-8-3" href = "#__codelineno-8-3" ></ a >< span class = "kt" > void</ span >< span class = "w" > </ span >< span class = "nf" > foo</ span >< span class = "p" > (</ span >< span class = "kt" > double</ span >< span class = "w" > </ span >< span class = "n" > speed_m_s</ span >< span class = "p" > )</ span >
</ span >< span id = "__span-8-4" >< a id = "__codelineno-8-4" name = "__codelineno-8-4" href = "#__codelineno-8-4" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-8-5" >< a id = "__codelineno-8-5" name = "__codelineno-8-5" href = "#__codelineno-8-5" ></ a >< span class = "w" > </ span >< span class = "c1" > // imports all the SI symbols at once</ span >
</ span >< span id = "__span-8-6" >< a id = "__codelineno-8-6" name = "__codelineno-8-6" href = "#__codelineno-8-6" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-8-7" >< a id = "__codelineno-8-7" name = "__codelineno-8-7" href = "#__codelineno-8-7" ></ a >< span class = "w" > </ span >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > speed</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > speed_m_s</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-8-8" >< a id = "__codelineno-8-8" name = "__codelineno-8-8" href = "#__codelineno-8-8" ></ a >< span class = "w" > </ span >< span class = "c1" > // ...</ span >
</ span >< span id = "__span-8-9" >< a id = "__codelineno-8-9" name = "__codelineno-8-9" href = "#__codelineno-8-9" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
< div class = "admonition note" >
< p class = "admonition-title" > Note</ p >
< p > This solution is perfect for small and isolated scopes but can cause surprising issues
when used in larger scopes or when used for the entire program namespace.</ p >
< p > There are 29 named units in SI, and each of them has many prefixed variations (e.g.,
< code > ng</ code > , < code > kcd</ code > , ...). It is pretty easy to introduce a name collision with those.</ p >
</ div >
</ div >
< div class = "tabbed-block" >
< p > Selectively bring only the required and not-conflicting symbols with
< a href = "https://en.cppreference.com/w/cpp/language/using_declaration" > using-declarations</ a > :</ p >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-9-1" >< a id = "__codelineno-9-1" name = "__codelineno-9-1" href = "#__codelineno-9-1" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-9-2" >< a id = "__codelineno-9-2" name = "__codelineno-9-2" href = "#__codelineno-9-2" ></ a >
</ span >< span id = "__span-9-3" >< a id = "__codelineno-9-3" name = "__codelineno-9-3" href = "#__codelineno-9-3" ></ a >< span class = "kt" > void</ span >< span class = "w" > </ span >< span class = "nf" > foo</ span >< span class = "p" > (</ span >< span class = "kt" > double</ span >< span class = "w" > </ span >< span class = "n" > N</ span >< span class = "p" > )</ span >
</ span >< span id = "__span-9-4" >< a id = "__codelineno-9-4" name = "__codelineno-9-4" href = "#__codelineno-9-4" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-9-5" >< a id = "__codelineno-9-5" name = "__codelineno-9-5" href = "#__codelineno-9-5" ></ a >< span class = "w" > </ span >< span class = "c1" > // ' N' function parameter would collide with the SI symbol for Newton, so we only bring what we need</ span >
</ span >< span id = "__span-9-6" >< a id = "__codelineno-9-6" name = "__codelineno-9-6" href = "#__codelineno-9-6" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > unit_symbols</ span >< span class = "o" > ::</ span >< span class = "n" > m</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-9-7" >< a id = "__codelineno-9-7" name = "__codelineno-9-7" href = "#__codelineno-9-7" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > unit_symbols</ span >< span class = "o" > ::</ span >< span class = "n" > s</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-9-8" >< a id = "__codelineno-9-8" name = "__codelineno-9-8" href = "#__codelineno-9-8" ></ a >< span class = "w" > </ span >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > speed</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > N</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-9-9" >< a id = "__codelineno-9-9" name = "__codelineno-9-9" href = "#__codelineno-9-9" ></ a >< span class = "w" > </ span >< span class = "c1" > // ...</ span >
</ span >< span id = "__span-9-10" >< a id = "__codelineno-9-10" name = "__codelineno-9-10" href = "#__codelineno-9-10" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< p > Specify a custom not conflicting unit identifier for a unit:</ p >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-10-1" >< a id = "__codelineno-10-1" name = "__codelineno-10-1" href = "#__codelineno-10-1" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-10-2" >< a id = "__codelineno-10-2" name = "__codelineno-10-2" href = "#__codelineno-10-2" ></ a >
</ span >< span id = "__span-10-3" >< a id = "__codelineno-10-3" name = "__codelineno-10-3" href = "#__codelineno-10-3" ></ a >< span class = "kt" > void</ span >< span class = "w" > </ span >< span class = "nf" > foo</ span >< span class = "p" > (</ span >< span class = "kt" > double</ span >< span class = "w" > </ span >< span class = "n" > speed_m_s</ span >< span class = "p" > )</ span >
</ span >< span id = "__span-10-4" >< a id = "__codelineno-10-4" name = "__codelineno-10-4" href = "#__codelineno-10-4" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-10-5" >< a id = "__codelineno-10-5" name = "__codelineno-10-5" href = "#__codelineno-10-5" ></ a >< span class = "w" > </ span >< span class = "c1" > // names of some local variables are conflicting with the symbols we want to use</ span >
</ span >< span id = "__span-10-6" >< a id = "__codelineno-10-6" name = "__codelineno-10-6" href = "#__codelineno-10-6" ></ a >< span class = "w" > </ span >< span class = "k" > auto</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "p" > ...;</ span >
</ span >< span id = "__span-10-7" >< a id = "__codelineno-10-7" name = "__codelineno-10-7" href = "#__codelineno-10-7" ></ a >< span class = "w" > </ span >< span class = "k" > auto</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "p" > ...;</ span >
</ span >< span id = "__span-10-8" >< a id = "__codelineno-10-8" name = "__codelineno-10-8" href = "#__codelineno-10-8" ></ a >
</ span >< span id = "__span-10-9" >< a id = "__codelineno-10-9" name = "__codelineno-10-9" href = "#__codelineno-10-9" ></ a >< span class = "w" > </ span >< span class = "k" > constexpr</ span >< span class = "w" > </ span >< span class = "n" > Unit</ span >< span class = "w" > </ span >< span class = "k" > auto</ span >< span class = "w" > </ span >< span class = "n" > mps</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-10-10" >< a id = "__codelineno-10-10" name = "__codelineno-10-10" href = "#__codelineno-10-10" ></ a >< span class = "w" > </ span >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > speed</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > speed_m_s</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > mps</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-10-11" >< a id = "__codelineno-10-11" name = "__codelineno-10-11" href = "#__codelineno-10-11" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< p > Full unit names are straightforward to use and often provide the most readable code:</ p >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-11-1" >< a id = "__codelineno-11-1" name = "__codelineno-11-1" href = "#__codelineno-11-1" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-11-2" >< a id = "__codelineno-11-2" name = "__codelineno-11-2" href = "#__codelineno-11-2" ></ a >
</ span >< span id = "__span-11-3" >< a id = "__codelineno-11-3" name = "__codelineno-11-3" href = "#__codelineno-11-3" ></ a >< span class = "kt" > void</ span >< span class = "w" > </ span >< span class = "nf" > foo</ span >< span class = "p" > (</ span >< span class = "kt" > double</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "p" > ,</ span >< span class = "w" > </ span >< span class = "kt" > double</ span >< span class = "w" > </ span >< span class = "n" > s</ span >< span class = "p" > )</ span >
</ span >< span id = "__span-11-4" >< a id = "__codelineno-11-4" name = "__codelineno-11-4" href = "#__codelineno-11-4" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-11-5" >< a id = "__codelineno-11-5" name = "__codelineno-11-5" href = "#__codelineno-11-5" ></ a >< span class = "w" > </ span >< span class = "n" > quantity</ span >< span class = "w" > </ span >< span class = "n" > speed</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > metre</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "p" > (</ span >< span class = "n" > s</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > si</ span >< span class = "o" > ::</ span >< span class = "n" > second</ span >< span class = "p" > );</ span >
</ span >< span id = "__span-11-6" >< a id = "__codelineno-11-6" name = "__codelineno-11-6" href = "#__codelineno-11-6" ></ a >< span class = "w" > </ span >< span class = "c1" > // ...</ span >
</ span >< span id = "__span-11-7" >< a id = "__codelineno-11-7" name = "__codelineno-11-7" href = "#__codelineno-11-7" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
</ div >
< p > Quantities of the same kind can be added, subtracted, and compared to each other:</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "6:2" >< input checked = "checked" id = "__tabbed_6_1" name = "__tabbed_6" type = "radio" />< input id = "__tabbed_6_2" name = "__tabbed_6" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_6_1" > C++ modules</ label >< label for = "__tabbed_6_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-12-1" >< a id = "__codelineno-12-1" name = "__codelineno-12-1" href = "#__codelineno-12-1" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-12-2" >< a id = "__codelineno-12-2" name = "__codelineno-12-2" href = "#__codelineno-12-2" ></ a >
</ span >< span id = "__span-12-3" >< a id = "__codelineno-12-3" name = "__codelineno-12-3" href = "#__codelineno-12-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-12-4" >< a id = "__codelineno-12-4" name = "__codelineno-12-4" href = "#__codelineno-12-4" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-12-5" >< a id = "__codelineno-12-5" name = "__codelineno-12-5" href = "#__codelineno-12-5" ></ a >
</ span >< span id = "__span-12-6" >< a id = "__codelineno-12-6" name = "__codelineno-12-6" href = "#__codelineno-12-6" ></ a >< span class = "k" > static_assert</ span >< span class = "p" > (</ span >< span class = "mi" > 1</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > km</ span >< span class = "w" > </ span >< span class = "o" > +</ span >< span class = "w" > </ span >< span class = "mi" > 50</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > ==</ span >< span class = "w" > </ span >< span class = "mi" > 1050</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "p" > );</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-13-1" >< a id = "__codelineno-13-1" name = "__codelineno-13-1" href = "#__codelineno-13-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-13-2" >< a id = "__codelineno-13-2" name = "__codelineno-13-2" href = "#__codelineno-13-2" ></ a >
</ span >< span id = "__span-13-3" >< a id = "__codelineno-13-3" name = "__codelineno-13-3" href = "#__codelineno-13-3" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-13-4" >< a id = "__codelineno-13-4" name = "__codelineno-13-4" href = "#__codelineno-13-4" ></ a >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-13-5" >< a id = "__codelineno-13-5" name = "__codelineno-13-5" href = "#__codelineno-13-5" ></ a >
</ span >< span id = "__span-13-6" >< a id = "__codelineno-13-6" name = "__codelineno-13-6" href = "#__codelineno-13-6" ></ a >< span class = "k" > static_assert</ span >< span class = "p" > (</ span >< span class = "mi" > 1</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > km</ span >< span class = "w" > </ span >< span class = "o" > +</ span >< span class = "w" > </ span >< span class = "mi" > 50</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "w" > </ span >< span class = "o" > ==</ span >< span class = "w" > </ span >< span class = "mi" > 1050</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > m</ span >< span class = "p" > );</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
< p > Various quantities can be multiplied or divided by each other:</ p >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-14-1" >< a id = "__codelineno-14-1" name = "__codelineno-14-1" href = "#__codelineno-14-1" ></ a >< span class = "k" > static_assert</ span >< span class = "p" > (</ span >< span class = "mi" > 140</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > km</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "p" > (</ span >< span class = "mi" > 2</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > h</ span >< span class = "p" > )</ span >< span class = "w" > </ span >< span class = "o" > ==</ span >< span class = "w" > </ span >< span class = "mi" > 70</ span >< span class = "w" > </ span >< span class = "o" > *</ span >< span class = "w" > </ span >< span class = "n" > km</ span >< span class = "w" > </ span >< span class = "o" > /</ span >< span class = "w" > </ span >< span class = "n" > h</ span >< span class = "p" > );</ span >
</ span ></ code ></ pre ></ div >
< div class = "admonition note" >
< p class = "admonition-title" > Note</ p >
< p > In case you wonder why this library does not use UDLs to create quantities, please check
our < a href = "../faq/#why-dont-we-use-udls-to-create-quantities" > FAQ</ a > .</ p >
</ div >
< h2 id = "quantity-points" > Quantity points< a class = "headerlink" href = "#quantity-points" title = "Permanent link" > ¶ </ a ></ h2 >
< p > The quantity point specifies an absolute quantity with respect to an origin.
If no origin is provided explicitly, an implicit one will be provided by the library.</ p >
< p > Together with quantities, they model < a href = "../../users_guide/framework_basics/the_affine_space/" > The Affine Space</ a > .</ p >
< p > Quantity points should be used in all places where adding two values is meaningless
(e.g., temperature points, timestamps, altitudes, readouts from the car's odometer, etc.).</ p >
< p > The set of operations that can be done on quantity points is limited compared to quantities.
This introduces an additional type-safety.</ p >
< div class = "tabbed-set tabbed-alternate" data-tabs = "7:2" >< input checked = "checked" id = "__tabbed_7_1" name = "__tabbed_7" type = "radio" />< input id = "__tabbed_7_2" name = "__tabbed_7" type = "radio" />< div class = "tabbed-labels" >< label for = "__tabbed_7_1" > C++ modules</ label >< label for = "__tabbed_7_2" > Header files</ label ></ div >
< div class = "tabbed-content" >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-15-1" >< a id = "__codelineno-15-1" name = "__codelineno-15-1" href = "#__codelineno-15-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < print> </ span >
</ span >< span id = "__span-15-2" >< a id = "__codelineno-15-2" name = "__codelineno-15-2" href = "#__codelineno-15-2" ></ a >< span class = "k" > import</ span >< span class = "w" > </ span >< span class = "n" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-15-3" >< a id = "__codelineno-15-3" name = "__codelineno-15-3" href = "#__codelineno-15-3" ></ a >
</ span >< span id = "__span-15-4" >< a id = "__codelineno-15-4" name = "__codelineno-15-4" href = "#__codelineno-15-4" ></ a >< span class = "kt" > int</ span >< span class = "w" > </ span >< span class = "nf" > main</ span >< span class = "p" > ()</ span >
</ span >< span id = "__span-15-5" >< a id = "__codelineno-15-5" name = "__codelineno-15-5" href = "#__codelineno-15-5" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-15-6" >< a id = "__codelineno-15-6" name = "__codelineno-15-6" href = "#__codelineno-15-6" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-15-7" >< a id = "__codelineno-15-7" name = "__codelineno-15-7" href = "#__codelineno-15-7" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-15-8" >< a id = "__codelineno-15-8" name = "__codelineno-15-8" href = "#__codelineno-15-8" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > usc</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-15-9" >< a id = "__codelineno-15-9" name = "__codelineno-15-9" href = "#__codelineno-15-9" ></ a >
</ span >< span id = "__span-15-10" >< a id = "__codelineno-15-10" name = "__codelineno-15-10" href = "#__codelineno-15-10" ></ a >< span class = "w" > </ span >< span class = "n" > quantity_point</ span >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > absolute</ span >< span class = "o" > < </ span >< span class = "n" > deg_C</ span >< span class = "o" > > </ span >< span class = "p" > (</ span >< span class = "mf" > 20.</ span >< span class = "p" > );</ span >
</ span >< span id = "__span-15-11" >< a id = "__codelineno-15-11" name = "__codelineno-15-11" href = "#__codelineno-15-11" ></ a >< span class = "w" > </ span >< span class = "n" > std</ span >< span class = "o" > ::</ span >< span class = "n" > println</ span >< span class = "p" > (</ span >< span class = "s" > " Temperature: {} ({})" </ span >< span class = "p" > ,</ span >
</ span >< span id = "__span-15-12" >< a id = "__codelineno-15-12" name = "__codelineno-15-12" href = "#__codelineno-15-12" ></ a >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "p" > .</ span >< span class = "n" > quantity_from_zero</ span >< span class = "p" > (),</ span >
</ span >< span id = "__span-15-13" >< a id = "__codelineno-15-13" name = "__codelineno-15-13" href = "#__codelineno-15-13" ></ a >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "p" > .</ span >< span class = "n" > in</ span >< span class = "p" > (</ span >< span class = "n" > deg_F</ span >< span class = "p" > ).</ span >< span class = "n" > quantity_from_zero</ span >< span class = "p" > ());</ span >
</ span >< span id = "__span-15-14" >< a id = "__codelineno-15-14" name = "__codelineno-15-14" href = "#__codelineno-15-14" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
</ div >
< div class = "tabbed-block" >
< div class = "language-cpp highlight" >< pre >< span ></ span >< code >< span id = "__span-16-1" >< a id = "__codelineno-16-1" name = "__codelineno-16-1" href = "#__codelineno-16-1" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/format.h> </ span >
</ span >< span id = "__span-16-2" >< a id = "__codelineno-16-2" name = "__codelineno-16-2" href = "#__codelineno-16-2" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/si.h> </ span >
</ span >< span id = "__span-16-3" >< a id = "__codelineno-16-3" name = "__codelineno-16-3" href = "#__codelineno-16-3" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < mp-units/systems/usc.h> </ span >
</ span >< span id = "__span-16-4" >< a id = "__codelineno-16-4" name = "__codelineno-16-4" href = "#__codelineno-16-4" ></ a >< span class = "cp" > #include</ span >< span class = "w" > </ span >< span class = "cpf" > < print> </ span >
</ span >< span id = "__span-16-5" >< a id = "__codelineno-16-5" name = "__codelineno-16-5" href = "#__codelineno-16-5" ></ a >
</ span >< span id = "__span-16-6" >< a id = "__codelineno-16-6" name = "__codelineno-16-6" href = "#__codelineno-16-6" ></ a >< span class = "kt" > int</ span >< span class = "w" > </ span >< span class = "nf" > main</ span >< span class = "p" > ()</ span >
</ span >< span id = "__span-16-7" >< a id = "__codelineno-16-7" name = "__codelineno-16-7" href = "#__codelineno-16-7" ></ a >< span class = "p" > {</ span >
</ span >< span id = "__span-16-8" >< a id = "__codelineno-16-8" name = "__codelineno-16-8" href = "#__codelineno-16-8" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-16-9" >< a id = "__codelineno-16-9" name = "__codelineno-16-9" href = "#__codelineno-16-9" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > si</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-16-10" >< a id = "__codelineno-16-10" name = "__codelineno-16-10" href = "#__codelineno-16-10" ></ a >< span class = "w" > </ span >< span class = "k" > using</ span >< span class = "w" > </ span >< span class = "k" > namespace</ span >< span class = "w" > </ span >< span class = "nn" > mp_units</ span >< span class = "o" > ::</ span >< span class = "nn" > usc</ span >< span class = "o" > ::</ span >< span class = "nn" > unit_symbols</ span >< span class = "p" > ;</ span >
</ span >< span id = "__span-16-11" >< a id = "__codelineno-16-11" name = "__codelineno-16-11" href = "#__codelineno-16-11" ></ a >
</ span >< span id = "__span-16-12" >< a id = "__codelineno-16-12" name = "__codelineno-16-12" href = "#__codelineno-16-12" ></ a >< span class = "w" > </ span >< span class = "n" > quantity_point</ span >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "w" > </ span >< span class = "o" > =</ span >< span class = "w" > </ span >< span class = "n" > absolute</ span >< span class = "o" > < </ span >< span class = "n" > deg_C</ span >< span class = "o" > > </ span >< span class = "p" > (</ span >< span class = "mf" > 20.</ span >< span class = "p" > );</ span >
</ span >< span id = "__span-16-13" >< a id = "__codelineno-16-13" name = "__codelineno-16-13" href = "#__codelineno-16-13" ></ a >< span class = "w" > </ span >< span class = "n" > std</ span >< span class = "o" > ::</ span >< span class = "n" > println</ span >< span class = "p" > (</ span >< span class = "s" > " Temperature: {} ({})" </ span >< span class = "p" > ,</ span >
</ span >< span id = "__span-16-14" >< a id = "__codelineno-16-14" name = "__codelineno-16-14" href = "#__codelineno-16-14" ></ a >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "p" > .</ span >< span class = "n" > quantity_from_zero</ span >< span class = "p" > (),</ span >
</ span >< span id = "__span-16-15" >< a id = "__codelineno-16-15" name = "__codelineno-16-15" href = "#__codelineno-16-15" ></ a >< span class = "w" > </ span >< span class = "n" > temp</ span >< span class = "p" > .</ span >< span class = "n" > in</ span >< span class = "p" > (</ span >< span class = "n" > deg_F</ span >< span class = "p" > ).</ span >< span class = "n" > quantity_from_zero</ span >< span class = "p" > ());</ span >
</ span >< span id = "__span-16-16" >< a id = "__codelineno-16-16" name = "__codelineno-16-16" href = "#__codelineno-16-16" ></ a >< span class = "p" > }</ span >
</ span ></ code ></ pre ></ div >
</ div >
</ div >
</ div >
< p > The above outputs:</ p >
< div class = "language-text highlight" >< pre >< span ></ span >< code >< span id = "__span-17-1" >< a id = "__codelineno-17-1" name = "__codelineno-17-1" href = "#__codelineno-17-1" ></ a > Temperature: 20 ℃ (68 ℉)
</ span ></ code ></ pre ></ div >
< div class = "admonition info" >
< p class = "admonition-title" > Info</ p >
< p > Check < a href = "../../users_guide/framework_basics/the_affine_space/" > The Affine Space</ a > chapter to learn
more about quantity points.</ p >
</ div >
</ article >
</ div >
< script > var target = document . getElementById ( location . hash . slice ( 1 )); target && target . name && ( target . checked = target . name . startsWith ( "__tabbed_" ))</ script >
</ div >
< button type = "button" class = "md-top md-icon" data-md-component = "top" hidden >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z" /></ svg >
Back to top
</ button >
</ main >
< footer class = "md-footer" >
< nav class = "md-footer__inner md-grid" aria-label = "Footer" >
< a href = "../introduction/" class = "md-footer__link md-footer__link--prev" aria-label = "Previous: Introduction" >
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z" /></ svg >
</ div >
< div class = "md-footer__title" >
< span class = "md-footer__direction" >
Previous
</ span >
< div class = "md-ellipsis" >
Introduction
</ div >
</ div >
</ a >
< a href = "../look_and_feel/" class = "md-footer__link md-footer__link--next" aria-label = "Next: Look and Feel" >
< div class = "md-footer__title" >
< span class = "md-footer__direction" >
Next
</ span >
< div class = "md-ellipsis" >
Look and Feel
</ div >
</ div >
< div class = "md-footer__button md-icon" >
< svg xmlns = "http://www.w3.org/2000/svg" viewBox = "0 0 24 24" >< path d = "M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z" /></ svg >
</ div >
</ a >
</ nav >
< div class = "md-footer-meta md-typeset" >
< div class = "md-footer-meta__inner md-grid" >
< div class = "md-copyright" >
< div class = "md-copyright__highlight" >
Copyright © 2018-2023 Mateusz Pusz
</ div >
Made with
< a href = "https://squidfunk.github.io/mkdocs-material/" target = "_blank" rel = "noopener" >
Material for MkDocs
</ a >
</ div >
</ div >
</ div >
</ footer >
</ div >
< div class = "md-dialog" data-md-component = "dialog" >
< div class = "md-dialog__inner md-typeset" ></ div >
</ div >
< script id = "__config" type = "application/json" >{ "base" : "../.." , "features" : [ "content.action.edit" , "content.action.view" , "content.code.annotate" , "content.code.copy" , "navigation.indexes" , "navigation.tabs" , "navigation.footer" , "navigation.top" , "search.highlight" , "search.share" , "search.suggest" , "toc.follow" , "toc.integrate" ], "search" : "../../assets/javascripts/workers/search.6ce7567c.min.js" , "translations" : { "clipboard.copied" : "Copied to clipboard" , "clipboard.copy" : "Copy to clipboard" , "search.result.more.one" : "1 more on this page" , "search.result.more.other" : "# more on this page" , "search.result.none" : "No matching documents" , "search.result.one" : "1 matching document" , "search.result.other" : "# matching documents" , "search.result.placeholder" : "Type to start searching" , "search.result.term.missing" : "Missing" , "select.version" : "Select version" }, "version" : { "provider" : "mike" }}</ script >
< script src = "../../assets/javascripts/bundle.83f73b43.min.js" ></ script >
< script src = "../../javascripts/mathjax.js" ></ script >
< script src = "https://polyfill.io/v3/polyfill.min.js?features=es6" ></ script >
< script src = "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js" ></ script >
</ body >
</ html >