Memutar pertanyaan penutup, "bagaimana cara mengkonversi tipe Test::A
" daripada menjadi kaku tentang persyaratan untuk memiliki pemain di sana, dan menjawab beberapa tahun terlambat hanya ini tampaknya menjadi pertanyaan populer sepertinya tidak ada orang lain yang telah menyebutkan alternatif , sesuai standar C ++ 11:
5.2.9 Pemain statis
... sebuah ekspresi e
dapat secara eksplisit dikonversi ke tipe T
menggunakan a static_cast
dari formulir static_cast<T>(e)
jika deklarasi
T t(e);
terbentuk dengan baik, untuk beberapa variabel temporer yang diciptakan t
(8.5). Efek dari konversi eksplisit seperti itu sama dengan melakukan deklarasi dan inisialisasi dan kemudian menggunakan variabel sementara sebagai hasil dari konversi.
Oleh karena itu langsung menggunakan formulir t(e)
juga akan berfungsi, dan Anda mungkin lebih suka kerapian:
auto result = Test(a);