Giriş
C++17 ile geliyor. "unused variable" uyarısını kapatır.
Macrolarda
Örnek
Elimizde şöyle bir kod olsun. NDEBUG tanımlı değilse assert derlenmez, j kullanılmıyor gibi görünür.
Tempate Kodlarda
Örnek
Elimizde şöyle bir kod olsun.
Elimizde şöyle bir kod olsun. int ile çağrılınca else kısmı çalışmaz.
C++17 ile geliyor. "unused variable" uyarısını kapatır.
Macrolarda
Örnek
Elimizde şöyle bir kod olsun. NDEBUG tanımlı değilse assert derlenmez, j kullanılmıyor gibi görünür.
void fun(int i, int j) {
assert(i < j);
// j not used here anymore
}
Şöyle yaparız.
void fun(int i,[[maybe_unsued]] int j) {
assert(i < j);
// j not used here anymore
}
Örnek
Elimizde şöyle bir kod olsun.
template <std::size_t... I>
auto func1(std::index_sequence<I...>)
{
auto var = get_tuple();
return func2(std::get<I>(var)...);
}
auto a = func1(std::make_index_sequence<0>());
0 ile çağrıldığı zaman var değişkeni kullanılmıyor. Uyarıyı kapatmak için şöyle yaparız.[[maybe_unused]]
auto var = get_tuple();
Örnek
Elimizde şöyle bir kod olsun. int ile çağrılınca else kısmı çalışmaz.
#include <type_traits>
template<typename T>
auto add_or_double(T t1, T t2) noexcept {
if constexpr (std::is_same_v<T, int>)
return t1 + t2;
else
return t1 * 2.0;
}
int main(){
add_or_double(1, 2);
add_or_double(1.0, 2.0);
}
Hiç yorum yok:
Yorum Gönder