dalam buku "Perpustakaan standar Cpp", edisi ke-2, oleh Nicolai M. Josuttis, mengatakan (5.4, p.125) bahwa definisi tipe umum struct adalah sebagai berikut:
template <typename T1, typename T2>
struct common_type<T1,T2> {
typedef decltype(true ? declval<T1>() : declval<T2>()) type;
};
Saya memiliki masalah serius untuk mempercayai bahwa ini adalah definisi common_type yang benar. Alasan:
typedef decltype(true ? declval<T1>() : declval<T2>()) type;//As far as I understand this will always pick second operand, declval<T1>(), due to the fact that there is 'true' value. Am I right?
false
, karena kodenya tidak pernah dijalankan. Kemungkinan besar tidak pernah ada kode apa pun yang dibuat untuk ini. Bahkan merupakan kesalahan jika adastd::declval
dalam kode yang dieksekusi. - person Some programmer dude   schedule 07.11.2012common_type
ini mengakibatkan perilaku yang tidak diinginkan dalam beberapa kasus, lihat laporan kerusakan DR2142. Namun jawaban Eugene Mamin masih benar. - person dyp   schedule 08.11.2012