c++ - Cast std::endl to a function pointer -
यह एक अनुवर्ती सवाल है
निम्न समाधान प्रस्तावित:
<कोड> समारोह (static_cast & LT; std :: ostream & amp; (& amp;) (std :: ostream & amp;) & gt; (std :: endl));मुझे यह भी पता चला है कि निम्न कोड मेरे लिए भी काम करता है:
फ़ंक्शन (स्टेटिक_कास्ट & lt; std :: ostream & amp; (*) (std :: ostream & amp; ;) & gt; (std :: endl));
प्रश्न & gt; कौन सा पसंदीदा तरीका है?
मैं ऐसा करूँगा:
टेम्पलेट & lt; वर्ग सिग & gt; संरचना संदर्भ_तथा_फंक्शन {}; टेम्पलेट & lt; वर्ग आर, कक्षा ... Args & gt; Struct संदर्भ_ कार्य_कार्यक्रम & lt; आर (आरजीएस ...) & gt; {टाइप करके = आर (& amp;) (एआरजी ...); }; टेम्पलेट & lt; वर्ग सिग & gt; Sig_t = typename reference_to_function & lt; Sig & gt; :: टाइप करें; टेम्पलेट & lt; वर्ग सिग & gt; sig_t & LT; सिग & gt; Pick_signature (sig_t & lt; Sig & gt; च) {वापसी च; }
फिर: <पूर्व>
फ़ंक्शन (पिक_सैग्नेचर & lt; std :: ostream & amp; (std :: ostream & amp;; & gt; (std :: endl));
जो एक
static_cast के बजाय मुझे क्या करना चाहते हैं, स्पष्ट करता है।
हो सकता है कि एक दूसरे संस्करण को एक क्लास प्रकार लेता हो और एक हस्ताक्षर, और तरीकों के लिए भी इसके लिए करता है (मुझे समझ में नहीं आ रहा है कि कैसे तरीकों के लिए इसे पारदर्शी तरीके से काम करना है, और मुझे लगता है कि सैद्धांतिक रूप से यह नहीं हो सकता।)।
Comments
Post a Comment