# Error code E0741

A non-structural-match type was used as the type of a const generic parameter.

Erroneous code example:

    #![allow(unused)]
    #![feature(adt_const_params)]

    fn main() {
    struct A;

    struct B<const X: A>; // error!
    }

Only structural-match types, which are types that derive `PartialEq` and `Eq` and implement `ConstParamTy`, may be used as the types of const generic parameters.

To fix the previous code example, we derive `PartialEq`, `Eq`, and `ConstParamTy`:

    #![allow(unused)]
    #![feature(adt_const_params)]

    fn main() {
    use std::marker::ConstParamTy;

    #[derive(PartialEq, Eq, ConstParamTy)] // We derive both traits here.
    struct A;

    struct B<const X: A>; // ok!
    }