Как избежать производительности предупреждение для Unique_PTR Check в VS?
-
21-12-2019 - |
Вопрос
Этот код:
unique_ptr<int> a;
if (a) {
cout << "ASSIGNED" << endl;
}
.
и даже этот код:
unique_ptr<int> a;
if (static_cast<bool>(a)) {
cout << "ASSIGNED" << endl;
}
.
вызвать это предупреждение:
warning C4800: 'void (__cdecl *)(std::_Bool_struct<_Ty> &)' : forcing value to bool 'true' or 'false' (performance warning)
with
[
_Ty=std::unique_ptr<int>
]
.
в Visual Studio 2012 на уровне предупреждения 3. После первых комментариев я обнаружил, что он бывает только если общий язык выполнения / CLR включен.Как мне избежать этого?
if (a.get() != nullptr)
.
должен работать, но я думаю, что это не так, как уникально_ptr был разработан, это было?
Решение
Вы можете использовать напрямую
if (a != nullptr)
. Другие советы
Вы обычно можете очистить предупреждение о производительности на Visual Studio с !!
:
unique_ptr<int> a;
if (!!a) {
cout << "ASSIGNED" << endl;
}
.
Я прочитал об этом на блоге Майкла Говарда давным-давно, но у меня нет ссылки.Он говорил о чистых компилятах и работе с компилятором вместо того, чтобы выключить предупреждения.
Не связан с StackOverflow