On 2020-05-13 11:53, Ville Voutilainen wrote:
On Wed, 13 May 2020 at 12:46, Marc Mutz via Development
<development@qt-project.org> wrote:
In the not so hypothetical case that Qt is used to visualize results of some business calculations, chances are that thrid-party libraries will use std::string or std::u16string, and not QString, requiring the use of
QString::fromStdString() to pass these to a QString API. Had the API
taken QStringView, no extra code would have been necessary.

Wait, what? How can QStringView view a std::string?

Touché.

I was a bit sloppy there.

There was an idea floating around this mailing-list next last year or so, to have one string class for different encodings. Of course, in and of itself, that's nonsense, because performance is not predicatable anymore. But for a really user-friendly API (as opposed to implementation-friendly), we could have most functions that now take QString, and are not candidates for overloading on QStringView, QUtf8StringView and QLatin1StringView, take a variant<QStringView, QUtf8StringView(, QLatin1StringView)>-like container, called QAnyString. They would then internally convert this into the encoding they need. I believe this would be an acceptable compromise between the many-small-narrowly-focused-classes and one-string-class-to-rule-them-all camps, as it would reduce the number of overloads in non-performance-critical areas while maintaining the flexibility that taking QString now offers. It's how multi-arg() is currently implemented, except it's private API now, and not anywhere near something that could become public API.

Thanks,
Marc
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to