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) |