summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
diff options
context:
space:
mode:
authorLouis Dionne <ldionne.2@gmail.com>2023-05-08 09:50:57 -0400
committerLouis Dionne <ldionne.2@gmail.com>2023-05-09 08:35:16 -0400
commit0acafcd8043412b028be89ce68ce301ce329d3eb (patch)
tree68b424a4e8ea3219a566d61062899e627321f54e /lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h
parent438e1cff7bfba1693db9fe66e848efe85232c992 (diff)
[libc++] Provide an assignment operator from pair<U, V> in C++03
This adds an extension to std::pair in C++03 mode where we provide an assignment operator from a pair<U, V>. Previously, any code trying to trigger such an assignment operator would have tried using the `operator=(pair const&)` copy assignment operator, which would then have tried creating a `pair const&` by using the unconstrained pair<U, V> constructor. After this patch, pair will instead go through operator= directly if its member types are assignable. If they are not assignable, the extension operator= is disabled with SFINAE and the pair(pair<U, V>) constructor will be used. Since that constructor is unconstrained, that will either work or give a hard error. This should be pretty transparent to users, but this is technically a behavior change in C++03. Indeed, if a type has both a valid cross-type assignment operator *and* a valid cross-type constructor, the library will now prefer the cross-type assignment instead of going through the cross-type constructor and then using the copy-constructor. Since this is the mandated behavior in C++11, however, one could argue that any user broken by that needs to change their code. The motivation for this change is to allow simplifying the definition of std::map's value_type, which requires handling assignment to a pair of references properly. This patch will allow removing complexity from https://llvm.org/D121485 instead of adding complexity in that patch. Differential Revision: https://reviews.llvm.org/D150119
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptedProcessPythonInterface.h')
0 files changed, 0 insertions, 0 deletions