Enum member isManifestAssignable

Returns true if the argument is a manifest constant, built-in type field, or immutable static

enum isManifestAssignable(alias sym) = __traits(compiles, () { enum y = sym; } );

Example

struct A {
    int m;
    static immutable int sim = 1;
    enum e = 1;
}

static assert(!isManifestAssignable!(A.m));
static assert( isManifestAssignable!(A.e));
static assert( isManifestAssignable!(A.sim));
static assert(!isManifestAssignable!int);