Because `const fn` does not support if-else branches: ```rust #[inline] pub /*const*/ fn new($($elem_name: bool),*) -> Self { $id($(Self::bool_to_internal($elem_name)),*) } #[inline] /* const */ fn bool_to_internal(x: bool) -> $elem_ty { if x { !(0 as $elem_ty) } else { 0 as $elem_ty } } #[inline] pub /*const*/ fn splat(value: bool) -> Self { let value = Self::bool_to_internal(value); $id($({ #[allow(non_camel_case_types, dead_code)] struct $elem_name; value }),*) } ``` EDIT: this issue will make sense as soon as I send the boolean vector PR.