Ten program jest kompilowany przez brzękiem:dzyń: inicjowanie odwołanie blokady z mutex
#include <mutex>
int main() {
std::mutex mtx;
const std::lock_guard<std::mutex>& lock(mtx);
return 0;
}
Inne główne kompilatory odrzucić go (Próbowałem gcc, msvc i ICC). To jest komunikat o błędzie z gcc:
error: invalid initialization of reference of type ‘const
std::lock_guard<std::mutex>&’ from expression of type ‘std::mutex’
Inne podają podobne błędy.
Czy klang jest dobry czy nie? Czy można to powtórzyć za pomocą prostszego przykładu nie obejmującego klas bibliotecznych? Próbowałem, ale bezskutecznie.
Edit to wydaje się być minimalna reprodukcji:
struct A {};
struct X
{
explicit X(A&) {};
};
int main()
{
A a;
const X& x(a);
}
ciekawe, int
zamiast A
nie wywoła komunikat o błędzie w brzękiem (dlatego nie mogę odtworzyć ten początkowo).
Tak ... to jest po prostu bug dzyń? Wygląda tak w moich oczach ... –
@ n.m .: Nie mam kwalifikacji do * tego * konkretnego połączenia. Powyższe jest po prostu sposobem wyjaśnienia komunikatu o błędzie dla siebie; Zostawię wyrok wyższym władzom ... ;-) – DevSolar