एक साधारण लकड़हारासार्वभौमिक संदर्भ द्वारा फ़ंक्शन पॉइंटर कैप्चर नहीं किया जाता है?
struct DebugOutput {
DebugOutput(std::ostream& out = std::cerr) : m_Out(out) {}
template<typename T>
inline DebugOutput& operator <<(T&& value) {
m_Out << value;
return *this;
}
private:
std::ostream& m_Out;
};
मुझे पता चला std::endl
universal reference द्वारा कब्जा कर लिया नहीं किया जाएगा लागू करने हैं।
DebugOutput dbg;
dgb << std::endl;
मैंने पाया इस this post जो यह बताती है कि आप संरचना जो विशेष रूप से समारोह सूचक हस्ताक्षर ले जाता है, यानी भीतर एक अतिभारित समारोह जोड़ने की जरूरत:
typedef std::ostream& (*StandardEndLine)(std::ostream&);
inline DebugOutput& operator<<(StandardEndLine manip) {
return *this;
}
क्यों समारोह सूचक सार्वभौमिक द्वारा कब्जा कर लिया नहीं है संदर्भ? क्या यह int
या void*
जैसा कोई प्रकार नहीं है?
यह एक टेम्पलेट/अधिभारित है। – Xeo
http://stackoverflow.com/a/1136617/46642 –
संभावित डुप्लिकेट [std :: endl अज्ञात प्रकार का है जब ऑपरेटर ओवरलोडिंग <<] (http://stackoverflow.com/questions/1134388/stdendl-is- अज्ञात-प्रकार-कब-ओवरलोडिंग-ऑपरेटर) – Xeo