Skip to content

C++ cases

Cases whose committed fixtures include C++ sources.

89 case(s). ← back to all examples

Case Title Verdict Category
case09_cpp_vtable C++ Vtable Change 🔴 BREAKING Breaking
case14_cpp_class_size C++ Class Size Change 🔴 BREAKING Breaking
case15_noexcept_change noexcept Removed 🟡 COMPATIBLE_WITH_RISK Risk
case16_inline_to_non_inline Inline → Non-inline (ODR / Symbol Appearance) 🟢 COMPATIBLE Addition (Compatible)
case17_template_abi Template Instantiation ABI Change 🔴 BREAKING Breaking
case21_method_became_static Method Became Static 🔴 BREAKING Breaking
case22_method_const_changed Method Const Qualifier Changed 🔴 BREAKING Breaking
case23_pure_virtual_added Virtual Method Became Pure Virtual 🔴 BREAKING Breaking
case32_param_defaults Parameter Default Value Changes (C++) 🟠 API_BREAK API Break
case34_access_level Access Level Changed 🟠 API_BREAK API Break
case37_base_class Base Class Changes 🔴 BREAKING Breaking
case38_virtual_methods Virtual Method Changes 🔴 BREAKING Breaking
case43_base_class_member_added Base Class Member Added 🔴 BREAKING Breaking
case47_inline_to_outlined Inline Method Moved Out-of-Line 🟢 COMPATIBLE Addition (Compatible)
case60_base_class_position_changed Base Class Position Changed (Multiple Inheritance Reorder) 🔴 BREAKING Breaking
case66_language_linkage_changed Language Linkage Changed (extern "C" removed) 🔴 BREAKING Breaking
case68_virtual_method_added Virtual Method Added to Non-Virtual Class 🔴 BREAKING Breaking
case69_trivial_to_nontrivial Trivially Copyable to Non-Trivial (Calling Convention Change) 🔴 BREAKING Breaking
case71_inline_namespace_moved Inline Namespace Moved 🔴 BREAKING Breaking
case72_covariant_return_changed Covariant Return Type Changed 🔴 BREAKING Breaking
case74_detail_base_class_changed Internal detail:: base class layout change leaks via public API 🔴 BREAKING Breaking
case75_detail_embedded_by_value Internal detail:: Struct Embedded by Value 🔴 BREAKING Breaking
case76_detail_pimpl_vtable_changed Internal detail:: Polymorphic Base Vtable Change 🔴 BREAKING Breaking
case77_detail_templated_base_changed Internal detail:: Templated Base Class Layout Change 🔴 BREAKING Breaking
case78_task_arena_attach_tag task_arena::attach Tag Type Replaces Enum 🔴 BREAKING Breaking
case79_missing_template_instantiation Missing Template Instantiation in Shipped Binary 🔴 BREAKING Breaking
case80_pimpl_shared_to_unique Pimpl Alias Switched from shared_ptr to unique_ptr 🔴 BREAKING Breaking
case81_serialization_tag_reassigned Serialization Tag ID Reassigned 🔴 BREAKING Breaking
case82_sycl_overload_set_removed SYCL Overload Set Removed (DPC++ Build Withdrawn) 🔴 BREAKING Breaking
case83_cpu_dispatch_isa_dropped CPU-dispatch ISA family dropped 🟡 COMPATIBLE_WITH_RISK Risk
case85_internal_template_signature_changed Internal Template Signature Changed 🔴 BREAKING Breaking
case86_tag_struct_renamed Tag Struct Renamed (empty class re-mangling) 🔴 BREAKING Breaking
case87_default_template_arg_changed Default Template Argument Changed 🔴 BREAKING Breaking
case88_cpo_kind_changed CPO kind changed (BREAKING) 🔴 BREAKING Breaking
case89_inline_accessor_renamed_pimpl_member Inline Accessor References Renamed Pimpl Member 🔴 BREAKING Breaking
case90_bundle_intra_dep_removed Bundle — Intra-Bundle Removed Symbol 🔴 BREAKING Bundle (Multi-library)
case91_bundle_intra_signature_drift Bundle — Intra-Bundle extern-C Signature Drift 🔴 BREAKING Bundle (Multi-library)
case92_bundle_provider_changed Bundle — Symbol Provider Migration 🟡 COMPATIBLE_WITH_RISK Bundle (Multi-library)
case93_bundle_manifest_drift Bundle — Instantiation Manifest Drift 🔴 BREAKING Bundle (Multi-library)
case94_empty_tag_gained_state Empty Tag Gained State 🔴 BREAKING Breaking
case95_allocator_nested_typedef_removed Allocator Nested-Typedef Removed 🔴 BREAKING Breaking
case96_hidden_friend_removed Hidden Friend Operator Removed 🟠 API_BREAK API Break
case97_api_depends_on_consumer_env API Depends on Consumer Environment 🔴 BREAKING Breaking
case98_cxx_standard_floor_raised C++ Standard Floor Raised 🟡 COMPATIBLE_WITH_RISK Risk
case99_experimental_graduated Experimental to Stable Graduation (Compatible) 🟢 COMPATIBLE Addition (Compatible)
case100_experimental_removed_without_replacement Experimental Declaration Removed Without Replacement 🔴 BREAKING Breaking
case101_inline_namespace_version_bumped Inline Namespace Version Bumped 🔴 BREAKING Breaking
case102_frozen_runtime_signature_changed Frozen Runtime Signature Changed 🔴 BREAKING Breaking
case104_glibcxx_dual_abi_flip libstdc++ Dual-ABI Flip 🔴 BREAKING Breaking
case105_concept_tightening Concept Tightening (C++20) 🟠 API_BREAK API Break
case106_ctor_became_explicit Conversion Operator Became explicit 🟠 API_BREAK API Break
case107_task_scheduler_init_removed task_scheduler_init Removed (historical ABI break) 🔴 BREAKING Breaking
case108_task_class_removed task Class Removed (historical ABI break — vtable angle) 🔴 BREAKING Breaking
case109_flow_graph_policy_renames flow::graph Policy Tag Renames 🔴 BREAKING Breaking
case110_concurrent_unordered_map_api_drift concurrent_unordered_map API Drift 🔴 BREAKING Breaking
case111_enumerable_thread_specific_lambda_ambiguity enumerable_thread_specific Lambda-Init Ambiguity 🟠 API_BREAK API Break
case113_abi_tag_changed ABI-tag set change ([abi:cxx11] lost on a single symbol) 🔴 BREAKING Breaking
case114_char8t_migration char8_t Migration (C++20 char-family → char8_t) 🔴 BREAKING Breaking
case117_no_unique_address [[no_unique_address]] Layout Overlay (no dedicated ChangeKind) 🔴 BREAKING Breaking
case122_template_signature_uninstantiated Uninstantiated Template Signature Change 🟡 COMPATIBLE_WITH_RISK Risk
case123_default_argument_removed Default Argument Removed 🟠 API_BREAK API Break
case124_header_constant_value_changed Header Constant Value Changed 🟠 API_BREAK API Break
case125_class_became_final Class Became final 🟠 API_BREAK API Break
case126_sycl_device_impl_ptr SYCL device Impl Pointer — shared_ptr → Raw Pointer 🔴 BREAKING Breaking
case129_struct_return_convention Struct-Return Convention Change 🔴 BREAKING Breaking
case130_exceptions_mode_flip Exceptions Mode Flip (-fno-exceptions) 🟡 COMPATIBLE_WITH_RISK Risk
case131_rtti_mode_flip RTTI Mode Flip (-fno-rtti) 🟡 COMPATIBLE_WITH_RISK Risk
case132_threadsafe_statics_flip Thread-Safe Statics Mode Flip 🟡 COMPATIBLE_WITH_RISK Risk
case133_tls_model_flip TLS Model Flip 🟡 COMPATIBLE_WITH_RISK Risk
case140_empty_base_optimization_lost Empty Base Optimization Lost (base subobject moved) 🔴 BREAKING Breaking
case142_vtable_slot_count_binary_only Vtable Slot Count Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case165_polymorphic_nonvirtual_dtor Polymorphic Type Without a Virtual Destructor (New Anti-Pattern) 🟡 COMPATIBLE_WITH_RISK Risk
case166_ref_qualifier_added Method Ref-Qualifier Added (str()str() &) 🔴 BREAKING Breaking
case167_base_became_virtual Base Class Became Virtual (: public Device: public virtual Device) 🔴 BREAKING Breaking
case168_virtual_method_devirtualized Virtual Method Devirtualized (flush() leaves the vtable) 🔴 BREAKING Breaking
case169_overload_added Overload Added to a Previously Unique Function 🟡 COMPATIBLE_WITH_RISK Risk
case172_vtable_thunk_offset_changed Vtable Thunk Offset Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case173_vtt_slot_count_changed VTT Slot Count Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case174_secondary_vtable_group_changed Secondary Vtable Group Changed 🔴 BREAKING Breaking
case177_long_double_abi_changed long double ABI Changed 🔴 BREAKING Breaking
case178_unnamed_type_in_public_abi Unnamed Type Leaks Into the Public ABI 🟡 COMPATIBLE_WITH_RISK Risk
case180_symbol_binding_lost_unique Symbol Binding Lost GNU_UNIQUE 🟡 COMPATIBLE_WITH_RISK Risk
case185_inherited_override_reuses_slot Inherited override reuses the base's vtable slot 🟢 COMPATIBLE Addition (Compatible)
case187_public_struct_private_field_type Public Struct Field Retyped to an Internal Type 🔴 BREAKING Breaking
case188_public_class_private_base_class Public Class Gains a Private Base Class 🔴 BREAKING Breaking
case189_public_function_private_parameter_type Public Function Parameter Retyped to an Internal Type 🔴 BREAKING Breaking
case191_header_only_graph_field_type Public Struct Gains a Field of a Private Type (Header-Only Graph) 🔴 BREAKING Breaking
case203_class_gained_vtable_pointer Class Gained a Vtable Pointer 🔴 BREAKING Breaking
case204_class_gained_non_virtual_method Class Gained a Non-Virtual Method 🟢 COMPATIBLE Addition (Compatible)