, § 26.2/2:Neden C++ bu karmaşıklığı yalnızca float, double veya long double için örneklendirilebilir?
float
,double
veyalong double
belirtilmemiş olan başka herhangi bir tür için şabloncomplex
başlatmasını etkisi.
Standart yazarlar bu kısıtlamayı neden açıkça eklerler? Bu, onu belirtilmemiş kılar, örneğin complex<int>
veya complex<MyCustomFixedPointType>
yaparsanız ne olur ve yapay bir kısıtlama gibi görünür.
Bu sınırlamanın bir nedeni var mı? Kendi özel türünüzle complex
örneğini oluşturmak istiyorsanız bir geçici çözüm var mı?
Ben öncelikle OP abs
complex<int>
için tuhaf çıkışları veriyordu neden olarak karıştı edildiği çünkü this earlier question bu soruyu soruyorum. Bununla birlikte, bu, complex
sayılarını sabit nokta türlerinden, yüksek hassasiyetli gerçek sayılardan vb. Yapmak isteyebileceğimiz göz önüne alındığında, bu durumun mantıklı bir anlamı yoktur.
Önceki cevabınızı gördükten sonra gülmem gerekiyordu, ama bu gerçekten iyi bir soru. – chris
@ chris- Bunun için üst düzey bir sebep vermeden bu cevabı vermekte kötü hissettim. Genelde "bu, X, Y ve Z nedenleri için C++ 'nın tuhaf bir durumudur" diyerek genellikle iyiyim, ama bu sefer ne olduğu hakkında hiçbir fikrim yok. – templatetypedef
"Komplekste standardının karmaşıklaştırılması on yıldan uzun bir süredir tartışılıyor ve en az bir tedarikçiden destek için önemli bir direnç var." http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-March/020398.html –