{"id":35633,"date":"2024-06-21T09:20:21","date_gmt":"2024-06-21T07:20:21","guid":{"rendered":"https:\/\/www.risc-software.at\/c-type-erasure-allows-the-creation-of-polymorphic-value-data-types-michael-hava-using-stdcpp-2024\/"},"modified":"2026-06-24T17:18:47","modified_gmt":"2026-06-24T15:18:47","slug":"c-type-erasure-allows-the-creation-of-polymorphic-value-data-types-michael-hava-using-stdcpp-2024","status":"publish","type":"post","link":"https:\/\/www.risc-software.at\/en\/c-type-erasure-allows-the-creation-of-polymorphic-value-data-types-michael-hava-using-stdcpp-2024\/","title":{"rendered":"C++ Type Erasure allows the creation of polymorphic value data types &#8211; Michael Hava using std::cpp 2024"},"content":{"rendered":"\n<p class=\"has-medium-font-size wp-block-paragraph\">Michael Hava gave a presentation on C++ Type Erasure at the conference &#8220;using std::cpp 2024&#8221; from April 24-26 at the Universidad Carlos III de Madrid.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Runtime polymorphism is realized in C++ with the virtual keyword. This approach requires the use of &#8220;reference semantics&#8221; and contradicts the concept of value semantics, which forms the basis for the STL. The &#8220;type erasure&#8221; idiom allows the creation of polymorphic value data types. Although there is no dedicated language support, it is an important tool for creating loosely coupled architectures and should be familiar to any advanced C++ developer. The talk presents the basic implementation techniques and discusses the use of type erasure in the standard library.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The whole lecture is available on YouTube:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"C++ Type Erasure - Michael Hava\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/CVjqmM8cbLc?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h3 class=\"wp-block-heading\">About Michael Hava<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><br>Michael Hava, Senior Software Developer and C++ expert at RISC Software GmbH, is part of the C++ standardization committee. He joined RISC Software in 2011 during his master studies at the University of Applied Sciences Upper Austria &#8211; Campus Hagenberg. Since then, he has promoted the introduction of modern C++ in various areas of engineering. With the aim of extending this promotion to education, he returned to his former university of applied sciences as a part-time lecturer in 2016. After attending his first C++ standardization meeting in 2019, he became a founding member of the Austrian C++ working group and serves as chair of the national committee. He remains in the LEWG most of the time and several of his papers are already accepted for C++26.<br><\/p>\n\n\n<script>\n\/\/----------------------------------------------------------\n\/\/------ JAVASCRIPT HOOK FUNCTIONS FOR GRAVITY FORMS -------\n\/\/----------------------------------------------------------\n\nif ( ! gform ) {\n\tdocument.addEventListener( 'gform_main_scripts_loaded', function() { gform.scriptsLoaded = true; } );\n\tdocument.addEventListener( 'gform\/theme\/scripts_loaded', function() { gform.themeScriptsLoaded = true; } );\n\twindow.addEventListener( 'DOMContentLoaded', function() { gform.domLoaded = true; } );\n\n\tvar gform = {\n\t\tdomLoaded: false,\n\t\tscriptsLoaded: false,\n\t\tthemeScriptsLoaded: false,\n\t\tisFormEditor: () => typeof InitializeEditor === 'function',\n\n\t\t\/**\n\t\t * @deprecated 2.9 the use of initializeOnLoaded in the form editor context is deprecated.\n\t\t * @remove-in 4.0 this function will not check for gform.isFormEditor().\n\t\t *\/\n\t\tcallIfLoaded: function ( fn ) {\n\t\t\tif ( gform.domLoaded && gform.scriptsLoaded && ( gform.themeScriptsLoaded || gform.isFormEditor() ) ) {\n\t\t\t\tif ( gform.isFormEditor() ) {\n\t\t\t\t\tconsole.warn( 'The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.' );\n\t\t\t\t}\n\t\t\t\tfn();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t\/**\n\t\t * Call a function when all scripts are loaded\n\t\t *\n\t\t * @param function fn the callback function to call when all scripts are loaded\n\t\t *\n\t\t * @returns void\n\t\t *\/\n\t\tinitializeOnLoaded: function( fn ) {\n\t\t\tif ( ! gform.callIfLoaded( fn ) ) {\n\t\t\t\tdocument.addEventListener( 'gform_main_scripts_loaded', () => { gform.scriptsLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t\tdocument.addEventListener( 'gform\/theme\/scripts_loaded', () => { gform.themeScriptsLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => { gform.domLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t}\n\t\t},\n\n\t\thooks: { action: {}, filter: {} },\n\t\taddAction: function( action, callable, priority, tag ) {\n\t\t\tgform.addHook( 'action', action, callable, priority, tag );\n\t\t},\n\t\taddFilter: function( action, callable, priority, tag ) {\n\t\t\tgform.addHook( 'filter', action, callable, priority, tag );\n\t\t},\n\t\tdoAction: function( action ) {\n\t\t\tgform.doHook( 'action', action, arguments );\n\t\t},\n\t\tapplyFilters: function( action ) {\n\t\t\treturn gform.doHook( 'filter', action, arguments );\n\t\t},\n\t\tremoveAction: function( action, tag ) {\n\t\t\tgform.removeHook( 'action', action, tag );\n\t\t},\n\t\tremoveFilter: function( action, priority, tag ) {\n\t\t\tgform.removeHook( 'filter', action, priority, tag );\n\t\t},\n\t\taddHook: function( hookType, action, callable, priority, tag ) {\n\t\t\tif ( undefined == gform.hooks[hookType][action] ) {\n\t\t\t\tgform.hooks[hookType][action] = [];\n\t\t\t}\n\t\t\tvar hooks = gform.hooks[hookType][action];\n\t\t\tif ( undefined == tag ) {\n\t\t\t\ttag = action + '_' + hooks.length;\n\t\t\t}\n\t\t\tif( priority == undefined ){\n\t\t\t\tpriority = 10;\n\t\t\t}\n\n\t\t\tgform.hooks[hookType][action].push( { tag:tag, callable:callable, priority:priority } );\n\t\t},\n\t\tdoHook: function( hookType, action, args ) {\n\n\t\t\t\/\/ splice args from object into array and remove first index which is the hook name\n\t\t\targs = Array.prototype.slice.call(args, 1);\n\n\t\t\tif ( undefined != gform.hooks[hookType][action] ) {\n\t\t\t\tvar hooks = gform.hooks[hookType][action], hook;\n\t\t\t\t\/\/sort by priority\n\t\t\t\thooks.sort(function(a,b){return a[\"priority\"]-b[\"priority\"]});\n\n\t\t\t\thooks.forEach( function( hookItem ) {\n\t\t\t\t\thook = hookItem.callable;\n\n\t\t\t\t\tif(typeof hook != 'function')\n\t\t\t\t\t\thook = window[hook];\n\t\t\t\t\tif ( 'action' == hookType ) {\n\t\t\t\t\t\thook.apply(null, args);\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs[0] = hook.apply(null, args);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( 'filter'==hookType ) {\n\t\t\t\treturn args[0];\n\t\t\t}\n\t\t},\n\t\tremoveHook: function( hookType, action, priority, tag ) {\n\t\t\tif ( undefined != gform.hooks[hookType][action] ) {\n\t\t\t\tvar hooks = gform.hooks[hookType][action];\n\t\t\t\thooks = hooks.filter( function(hook, index, arr) {\n\t\t\t\t\tvar removeHook = (undefined==tag||tag==hook.tag) && (undefined==priority||priority==hook.priority);\n\t\t\t\t\treturn !removeHook;\n\t\t\t\t} );\n\t\t\t\tgform.hooks[hookType][action] = hooks;\n\t\t\t}\n\t\t}\n\t};\n}\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital' data-form-theme='orbital' data-form-index='0' id='gform_wrapper_3' ><style>#gform_wrapper_3[data-form-index=\"0\"].gform-theme,[data-parent-form=\"3_0\"]{--gf-color-primary: #5181a9;--gf-color-primary-rgb: 81, 129, 169;--gf-color-primary-contrast: #ffffff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #1F4F77;--gf-color-primary-lighter: #83B3DB;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #5181a9;--gf-color-in-ctrl-primary-rgb: 81, 129, 169;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #1F4F77;--gf-color-in-ctrl-primary-lighter: #83B3DB;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url(\"data:image\/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-select: url(\"data:image\/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-search: url(\"data:image\/svg+xml,%3Csvg width='640' height='640' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-file-btn-bg-color-hover: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}<\/style>\n                        <div class='gform_heading'>\n                            <p class='gform_description'><\/p>\n                        <\/div><form method='post' enctype='multipart\/form-data'  id='gform_3'  action='\/en\/wp-json\/wp\/v2\/posts\/35633' data-formid='3' novalidate>\n                        <div class='gform-body gform_body'><div id='gform_fields_3' class='gform_fields top_label form_sublabel_above description_below validation_below'><fieldset id=\"field_3_1\" class=\"gfield gfield--type-name gfield--input-type-name gfield_contains_required field_sublabel_hidden_label gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' >Name<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/legend><div class='ginput_complex ginput_container ginput_container--name no_prefix no_first_name no_middle_name has_last_name no_suffix gf_name_has_1 ginput_container_name gform-grid-row' id='input_3_1'>\n                            \n                            \n                            \n                            <span id='input_3_1_6_container' class='name_last gform-grid-col gform-grid-col--size-auto' >\n                                                    <input type='text' name='input_1.6' id='input_3_1_6' value=''   aria-required='true'   placeholder='Name' autocomplete=\"family-name\" \/>\n                                                    <label for='input_3_1_6' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>Last<\/label>\n                                                <\/span>\n                            \n                        <\/div><\/fieldset><div id=\"field_3_13\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_above gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_13'>Company<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_13' id='input_3_13' type='text' value='' class='large'    placeholder='Company' aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_3_2\" class=\"gfield gfield--type-email gfield--input-type-email gfield--width-half gfield_contains_required field_sublabel_above gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_2'>Email address<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_2' id='input_3_2' type='email' value='' class='large'   placeholder='Email Address' aria-required=\"true\" aria-invalid=\"false\"  \/>\n                        <\/div><\/div><div id=\"field_3_3\" class=\"gfield gfield--type-textarea gfield--input-type-textarea gfield_contains_required field_sublabel_above gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_3'>Your message to us<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_3_3' class='textarea medium'    placeholder='Your message to us' aria-required=\"true\" aria-invalid=\"false\"   rows='10' cols='50'><\/textarea><\/div><\/div><div id=\"field_3_14\" class=\"gfield gfield--type-hcaptcha gfield--input-type-hcaptcha gfield--width-full field_sublabel_above gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_14'>hCaptcha<\/label>\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tclass=\"hcaptcha-widget-id\"\n\t\t\t\tname=\"hcaptcha-widget-id\"\n\t\t\t\tvalue=\"eyJzb3VyY2UiOlsiZ3Jhdml0eWZvcm1zXC9ncmF2aXR5Zm9ybXMucGhwIl0sImZvcm1faWQiOjN9-bd38ffb13559c65fe7b55e98f99af2c2\">\n\t\t\t\t<h-captcha\n\t\t\tclass=\"h-captcha\" id=\"input_3_14\" data-tabindex=\"0\"\n\t\t\tdata-sitekey=\"3a6a81c1-2b2e-4b2a-b1eb-d9446bc09afb\"\n\t\t\tdata-theme=\"light\"\n\t\t\tdata-size=\"normal\"\n\t\t\tdata-auto=\"false\"\n\t\t\tdata-ajax=\"false\"\n\t\t\tdata-force=\"false\">\n\t\t<\/h-captcha>\n\t\t<input type=\"hidden\" id=\"gravity_forms_nonce\" name=\"gravity_forms_nonce\" value=\"5fa0817af2\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/posts\/35633\" \/><\/div><\/div><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_3' class='gform_button button gform-button--width-full' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Submit'  \/> \n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_3' value='postback' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_3' id='gform_theme_3' value='orbital' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_3' id='gform_style_settings_3' value='{&quot;buttonPrimaryBackgroundColor&quot;:&quot;#5181a9&quot;,&quot;buttonPrimaryColor&quot;:&quot;#ffffff&quot;}' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_3' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='3' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='Sf1ZYrIooeyIVyJOqACdKWW2ixQlstO1BUmCW6Z\/i2v2uJUfoT63bC\/12BWrAnF7qTZOJjUIVkrN2N17wQHEhnuc5dekEUwIleqC6+tKtbyI5+U=' \/>\n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_3' value='WyJbXSIsIjM3MzM4YWJmYTYyZTMwYTVlODJkODUwMGU3YzU5YjViIl0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_3' id='gform_target_page_number_3' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_3' id='gform_source_page_number_3' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div><script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 3, 'https:\/\/www.risc-software.at\/app\/plugins\/gravityforms\/images\/spinner.svg', false );jQuery('#gform_ajax_frame_3').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_3');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_3').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_3').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_3').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_3').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/  }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_3').val();gformInitSpinner( 3, 'https:\/\/www.risc-software.at\/app\/plugins\/gravityforms\/images\/spinner.svg', false );jQuery(document).trigger('gform_page_loaded', [3, current_page]);window['gf_submitting_3'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_3').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [3]);window['gf_submitting_3'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_3').text());}else{jQuery('#gform_3').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"3\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_3\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_3\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_3\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 3, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );\n<\/script>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"contact-person\">\n      <picture>\n      \n      \n      \n      \n      <img decoding=\"async\" data-aos=\"fade-zoom-in\"\n           data-aos-offset=\"0\" class=\"w-full\" width=\"212\" height=\"293\"\n           src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/06\/mhava1-removebg-preview.png\"\n           alt=\"\">\n    <\/picture>\n    \n\n<h5 class=\"wp-block-heading\">Michael Florian Hava, MSc<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Senior Software Architect<\/p>\n\n  <\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Read more<\/h2>\n\n\n<div class=\"posts-slider-block\" data-aos=\"fade-up\" data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\">\n        <section class=\"splide posts-slider\" aria-label=\"Gallery Slides\">\n            <div class=\"splide__arrows\">\n                <button class=\"splide__arrow splide__arrow--prev\">\n                    <span class=\"sr-only\">Previous<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Previous\">\n                <\/button>\n                <button class=\"splide__arrow splide__arrow--next\">\n                    <span class=\"sr-only\">Next<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Next\">\n                <\/button>\n            <\/div>\n            <div class=\"inner\">\n                <div class=\"splide__track\">\n                    <div class=\"splide__list\">\n\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/technical-article-c20-concepts\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/06\/iStock-464478994-360x214.jpg\"\n                                                 alt=\"C++20 Concepts (EN)\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>C++20 Concepts (EN)<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        A brief historical overview of the development of the programming language and the implementation of &quot;Templates&quot; and &quot;Concepts&quot;.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/ahoi-c26\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/09\/2023-06-26-Varna_5-360x214.jpeg\"\n                                                 alt=\"Ahoi C++26\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Ahoi C++26<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        \n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/c20-concepts-bringt-vernunft-in-die-generische-programmierung-michael-hava-beim-using-stdcpp-2023\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/05\/2023-04-28_usingcpp-mhava-360x214.png\"\n                                                 alt=\"C++20 Concepts brings sanity to generic programming - Michael Hava on using std::cpp 2023\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>C++20 Concepts brings sanity to generic programming &#8211; Michael Hava on using std::cpp 2023<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Michael Hava gave a presentation on C++ Concepts at the &quot;using std::cpp&quot; 2023 conference held April 27-28 at the Universidad Carlos III de Madrid.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/c-big-in-japan-michael-hava-at-the-c26-committee-meeting\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2024\/03\/2024-03-28-Cpp-Japan1-360x214.jpg\"\n                                                 alt=\"C++, big in Japan - Michael Hava at the C++26 committee meeting\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>C++, big in Japan &#8211; Michael Hava at the C++26 committee meeting<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        The C++ committee met from March 18 to 23 in Tokyo and continued to work on features for C++26. Michael Hava is part of this committee and was there as usual. \n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/c23-finalisiert\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/10\/2023-02-11-Issaquah3-1-360x214.jpg\"\n                                                 alt=\"C++23 finalisiert!\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>C++23 finalisiert!<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Das ISO C++ Komitee traf sich vom 6. bis 11. Februar in Issaquah, Washington (USA) f\u00fcr finale Abstimmungen an C++23. Nach drei Jahren unter erschwerten Bedingungen wurde der neuste C++ Standard plan- und fristgerecht verabschiedet.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/aloha-again-michael-hava-beim-c-komitee-meeting-in-hawaii\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/11\/2023-11-CPP-Hawaii_2-360x214.png\"\n                                                 alt=\"Aloha again: Michael Hava beim C++-Komitee-Meeting in Hawaii\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Aloha again: Michael Hava beim C++-Komitee-Meeting in Hawaii<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Von 6. bis 11. November 2023 fand in Kona, Hawaii (USA) ein Face-to-Face-Meeting des C++ Komitees statt. Michael Hava, Senior Software Developer und C++-Koryph\u00e4e der RISC Software GmbH, ist Teil dieses Komitees und nahm daher an diesem Meeting teil. \n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/aloha-c-michael-hava-beim-komitee-meeting-in-hawaii\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                                                                                <picture>\n                                                                                        <img decoding=\"async\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/11\/2022-11-7-WG21_F2FKona_4-360x214.jpg\"\n                                                 alt=\"Aloha C++: Michael Hava beim Komitee-Meeting in Hawaii\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>Aloha C++: Michael Hava beim Komitee-Meeting in Hawaii<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Beim Face-to-Face-Meeting in Hawaii Anfang November lief f\u00fcr Michael Hava nicht alles wie geplant und trotzdem besser als gedacht.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                            <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Michael Hava gave a presentation on C++ Type Erasure at the conference &#8220;using std::cpp 2024&#8221; from April 24-26 at the Universidad Carlos III de Madrid.<\/p>\n","protected":false},"author":2,"featured_media":31544,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[29],"tags":[],"class_list":["post-35633","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-en"],"acf":[],"portrait_thumb_url":"https:\/\/www.risc-software.at\/app\/uploads\/2024\/06\/using_std_cpp2024-360x214.png","category_name":"News","watermark":false,"_links":{"self":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/posts\/35633","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/comments?post=35633"}],"version-history":[{"count":2,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/posts\/35633\/revisions"}],"predecessor-version":[{"id":38049,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/posts\/35633\/revisions\/38049"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media\/31544"}],"wp:attachment":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media?parent=35633"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/categories?post=35633"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/tags?post=35633"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}