Bu libstdC++ uygulamasının std::ignore
numaralı uygulamasının, bir uçucu rıhtıya bağlanamayan bir const T&
argümanını aldığını fark ettim. Böylece, aşağıdaki kod derlenmeyecektir:Std :: ignore için volatile rvalue atama reddetmek için libstdC++ yanlış mı?
#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)
bu standart ihlal mı veya bu tanımsız davranış hale getiren bir madde bulunmamaktadır?
Neden ilk etapta 'volatile' kullanmak isteyeyim? Optimizasyonları devre dışı bırakır, iş parçacığını güvenli hale getirmez. Bunu neden yaptığını anlamıyorum ... –
@JesperJuhl * çünkü orada * – Brian
İyi bir sebep değil. Kod değiştirilebilir. –