https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110323
--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> --- VAL is constexpr, which implies const, which in the global scope implies static. Then constrain_visibility_for_template makes "struct conditional<(B == VAL), int, float>" non-TREE_PUBLIC. So with extern constexpr int VAL = 1; the test works again.