Ich bemerkte, dass libstdC++ die Implementierung von std::ignore
ein const T&
Argument, das nicht an einen flüchtigen rvalue binden kann. Daher schlägt der folgende Code zu kompilieren:Ist libstdC++ falsch, um die Zuweisung von flüchtigem rvalue zu std :: ignore abzulehnen?
#include <tuple>
#include <utility>
struct C {};
using VC = C volatile;
int main() {
std::tuple<VC> t;
std::tie(std::ignore) = std::move(t);
}
(http://coliru.stacked-crooked.com/a/7bfc499c1748e59e)
Ist dies eine Verletzung der Norm, oder gibt es eine Klausel, die dieses nicht definiertes Verhalten macht?
Warum würden Sie verwenden möchten 'volatile' in erster Linie? Es deaktiviert Optimierungen, macht die Dinge nicht sicher. Ich sehe nicht, warum du das tust ... –
@JesperJuhl * weil es da ist * – Brian
Kein guter Grund. Code kann geändert werden. –