Misalkan saya sedang mengerjakan kode ilmiah dalam C ++. Dalam diskusi baru-baru ini dengan seorang kolega, dikemukakan bahwa templat ekspresi bisa menjadi hal yang sangat buruk, berpotensi membuat perangkat lunak hanya dapat dikompilasi pada versi gcc tertentu. Seharusnya, masalah ini telah mempengaruhi beberapa kode ilmiah, seperti yang disinggung dalam subtitle dari parodi Downfall ini . (Ini adalah satu-satunya contoh yang saya tahu, maka tautannya.)
Namun, orang lain berpendapat bahwa templat ekspresi berguna karena mereka dapat menghasilkan keuntungan kinerja, seperti dalam makalah ini dalam SIAM Journal of Scientific Computing , dengan menghindari penyimpanan hasil antara dalam variabel sementara.
Saya tidak tahu banyak tentang template metaprogramming di C ++, tapi saya tahu itu adalah salah satu pendekatan yang digunakan dalam diferensiasi otomatis dan dalam aritmatika interval, yang merupakan cara saya terlibat dalam diskusi tentang template ekspresi. Mengingat potensi keuntungan dalam kinerja dan potensi kerugian dalam pemeliharaan (jika itu kata yang tepat), kapan saya harus menggunakan templat ekspresi C ++ dalam ilmu komputasi, dan kapan saya harus menghindarinya?