Bagikan melalui


Peringatan C26457

(void) tidak boleh digunakan untuk mengabaikan nilai pengembalian, gunakan 'std::ignore =' sebagai gantinya (es.48)

Keterangan

Kutipan dari C++ Core Guideline ES.48:

Jangan pernah mentransmisikan untuk (void) mengabaikan nilai yang [[nodiscard]] dikembalikan. Jika Anda sengaja ingin membuang hasil seperti itu, pertama-tama pikirkan dengan keras apakah itu benar-benar ide yang baik (biasanya ada alasan yang baik penulis fungsi atau jenis pengembalian yang digunakan [[nodiscard]] di tempat pertama). Jika Anda masih berpikir itu sesuai dan peninjau kode Anda setuju, gunakan std::ignore = untuk menonaktifkan peringatan yang sederhana, portabel, dan mudah di grep.

Nama analisis kode: USE_STD_IGNORE_INSTEAD_OF_VOID_CAST

Contoh

Gunakan std::ignore alih-alih transmisi ke void:

struct S{};
[[nodiscard]] S getS();

void function() {
    (void) getS(); // C26457
    std::ignore = getS(); // OK
}