136 votes

Pourquoi il n'y a pas de support pour la concaténation de std::string et std::string_view?

Depuis C++1z, nous avons std::string_view, un léger point de vue dans une séquence contiguë de caractères qui évite la copie des données. Au lieu d'avoir un const std::string& paramètre, il est souvent recommandé d'utiliser std::string_view.

Cependant, on constate que le passage d' const std::string& de std::string_view sauts de code qui utilise la concaténation de chaîne comme il n'y a pas de support pour la concaténation std::string et std::string_view:

std::string{"abc"} + std::string_view{"def"}; // ill-formed (fails to compile)
std::string_view{"abc"} + std::string{"def"}; // ill-formed (fails to compile)

Pourquoi il n'y a pas de support pour la concaténation std::string et std::string_view dans la norme?

86voto

vitaut Points 10255

La raison de ceci est donné dans n3512 string_ref: un non propriétaire de référence à une chaîne, révision 2 par Jeffrey Yasskin:

J'ai aussi omis de l'opérateur+(basic_string, basic_string_ref) parce que LLVM retourne un objet léger à partir de cette surcharge et effectue la concaténation paresseusement. Si l'on définit cette surcharge, nous allons avoir un moment difficile l'introduction de la légèreté et de concaténation plus tard.

Il a été suggéré sur le std-propositions de la liste de diffusion pour ajouter ces surcharge de l'opérateur à la norme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X