सी ++ में टेम्पलेट फ़ंक्शन बनाते समय टेम्पलेट के टाइपनाम को स्ट्रिंग के रूप में प्रदर्शित करने का एक आसान तरीका है? मैं मुझे क्या करना (कोड से पता चला संकलन नहीं है ध्यान दें) कोशिश कर रहा हूँ दिखाने के लिए एक साधारण परीक्षण मामला है:संकलन समय पर प्रिंट टेम्पलेट टाइपनाम
#include <stdio.h>
template <typename type>
type print(type *addr)
{
printf("type is: %s",typename);
}
int main()
{
int a;
print(&a);
}
// Would like to print something like:
// type is: int
मुझे लगता है कि typename संकलन समय जब समारोह instantiated है पर उपलब्ध होना चाहिए, लेकिन मैं टेम्पलेट्स से परिचित नहीं हूं और मैंने टाइपिंग को स्ट्रिंग के रूप में प्राप्त करने का कोई तरीका नहीं देखा है।
कारण मैं इसे करना चाहता हूं कुछ प्रिंटफ प्रकार डीबगिंग के लिए है। मेरे पास कई धागे चल रहे हैं और जीडीबी के साथ कदम उठाने से कार्यक्रम व्यवहार में परिवर्तन होता है। तो कुछ चीजों के लिए मैं जानकारी को डंप करना चाहता हूं कि कौन से फ़ंक्शंस निष्पादित किए जा रहे थे। यह बहुत महत्वपूर्ण नहीं है इसलिए यदि समाधान अत्यधिक जटिल है तो मैं इस जानकारी को अपने लॉगिंग फ़ंक्शन में जोड़ना छोड़ दूंगा। लेकिन अगर ऐसा करने का एक आसान तरीका था तो यह उपयोगी जानकारी होगी।
सहित 'टाइपिड (प्रकार) .name()' का प्रयास करें 'क्या आपको संकलन समय पर सख्ती से इसकी आवश्यकता है? अन्यथा, 'टाइपिड (प्रकार) .name()' मदद कर सकता है। – Philipp
कोई बात नहीं, संकलन-समय की चीज़ नहीं देखी, लेकिन यदि आप इसे प्रिंट कर रहे हैं, तो मुझे यकीन है कि आप इसे रन-टाइम पर समझ सकते हैं। – chris