Pertanyaan Pesan kesalahan diagnostik yang lebih tepat dengan template?


Kesalahan kompilasi dengan templat seringkali tidak jelas dan tidak mudah dipecahkan kecuali jika benar-benar berpengalaman dengan templat. Banyak kali seorang ahli programmer mungkin juga bingung dengan ini. Saya yakin sebagian besar dari kita telah merasakan sejumput banyak kali.

Seperti yang saya pahami, standar C ++ hanya mengamanatkan implementasi untuk menyediakan diagnostik untuk program yang tidak terbentuk tetapi tidak bagaimana atau apa pesan diagnostik harus disediakan.
Namun, apakah ada pedoman yang ditetapkan oleh Komite Standar untuk mengatasi masalah diagnosa yang tidak dapat dipecahkan dengan mudah (terutama) dalam hal template. Apakah ini pernah muncul untuk diskusi? Juga, apakah implementasi arus utama melakukan sesuatu atau telah merencanakan tentang masalah ini?

Pertanyaannya cukup terbuka untuk diskusi tetapi dengan komunitas SO C ++ menjadi salah satu komunitas C ++ paling aktif saya yakin seseorang di suatu tempat harus memiliki setidaknya beberapa gagasan tentang hal ini. Juga, beberapa anggota komite Standar (saya tahu) secara aktif berpartisipasi pada tag C ++, saya berharap mereka mungkin memiliki beberapa informasi tentang ini jika et al.


5
2018-05-24 18:41


asal


Jawaban:


Anda mengajukan dua pertanyaan terpisah.

Pertama-tama, ya, implementasi arus utama melakukan sesuatu tentang hal itu. Ini mungkin bukan prioritas utama untuk g ++ atau msvc, tetapi itu bukan satu-satunya implementasi utama. Itu adalah salah satu tujuan desain di balik dentang (lihat http://clang.llvm.org/diagnostics.html), dan setidaknya di beberapa titik Intel mencatat kesalahan template yang lebih baik sebagai titik penjualan untuk ic ++ over msvc.

Kedua, orang-orang di komite standar membahas hal ini secara detail, dan kebanyakan setuju bahwa konsep adalah bagian besar dari jawaban, yang secara efektif berarti bahwa konsep itu telah ditangguhkan ke masa depan karena konsep dihapus dari standar C ++ 11.


5
2018-05-24 18:54



Ini jelas masalah, terutama ketika orang mulai melakukan hal-hal rumit dengan metaclasses. Satu-satunya alat yang saya tahu yang membantu sedikit adalah stlfilt, yang "menyederhanakan dan / atau memformat ulang pesan kesalahan dan peringatan C ++ yang panjang, dengan fokus pada diagnosa terkait STL"


3
2018-05-24 18:46