समापन प्रश्न को काटते हुए, "कैसे मैं एक प्रकार को रूपांतरित करता हूं Test::A
" के बजाय उसमें एक कलाकार होने की आवश्यकता के बारे में कठोर होने के अलावा , और कई वर्षों के उत्तर देने के बाद बस यह एक लोकप्रिय प्रश्न लगता है किसी और ने विकल्प का उल्लेख नहीं किया है , प्रति C ++ 11 मानक:
5.2.9 स्टेटिक कास्ट
... एक अभिव्यक्ति e
स्पष्ट रूप से एक प्रकार में बदला जा सकता T
है एक का उपयोग कर static_cast
फार्म की static_cast<T>(e)
अगर घोषणा
T t(e);
, अच्छी तरह से बनाई है कुछ का आविष्कार अस्थायी चर के लिए t
(8.5)। इस तरह के एक स्पष्ट रूपांतरण का प्रभाव घोषणा और आरंभीकरण करने और फिर रूपांतरण के परिणामस्वरूप अस्थायी चर का उपयोग करने के समान है।
इसलिए सीधे रूप का उपयोग करना t(e)
भी काम करेगा, और आप इसे नीरसता के लिए पसंद कर सकते हैं:
auto result = Test(a);