0

我在 Qt5 中使用这个功能已经有一段时间了:

static QString demangle( const QString &name )
{
    int status;
    std::unique_ptr< char, void(*)( void* ) > res (
        abi::__cxa_demangle( name.toLatin1(), nullptr, nullptr, &status ), std::free );
    return { ( status == 0 ) ? QLatin1String( res.get() ) : name };
}

自从开始使用Qt6,

ct_Halt( demangle(typeid (QStringList).name() ), demangle(typeid (QList<QString>).name() ) );

现在生产

QString demangle(typeid (QStringList).name() )
"QList<QString>" // This used to produce QStringList in Qt5

QString demangle(typeid (QList<QString>).name() )
"QList<QString>"

这个小烦恼破坏了我创建的图书馆。这没什么大不了的,但我想知道是否可以“修复” demangle 函数以准确反映类型名。

4

0 回答 0