c++中在结构中使用共用体为什么不能使用string类

我有这样一个结构体
struct widget{
    string brand;
    int type;
    union {
        long id_num;
        string id_string;
    };
};

当我试图使用
widget test;//此时编译器提示Call to implicitly-deleted default constructor of 'widget'

但是当我把共用体里的string 改为 char id_string[20]时就可以通过编译

网上找了许多资料都感觉没有说清楚

本人是个c++初学者 希望大家能将详细一些

联合体不能含有带非平凡特殊成员函数(复制构造函数、复制赋值运算符或析构函数)的非静态数据成员。https://zh.cppreference.com/w/cpp/language/union