// ::integral_constant<::char, V> is a type that says one character // there are no character values, so it says its own distance from '\0' ::emit<::integral_constant<::char, ::difference<'h', '\0'>>>::commit; ::emit<::integral_constant<::char, ::difference<'i', '\0'>>>::commit; // ::char on its own is a type like any other, and says its name ::emit<::remove_cv_t<::char>>::commit; // two character types are the same type when they say the same thing ::static_assert< ::is_same< ::integral_constant<::char, ::difference<'a', '\0'>>, ::integral_constant<::char, ::sum<::difference<'a', 'b'>, ::difference<'b', '\0'>>> >::value >::commit;