के बीच अंतर करने के लिए मैं बढ़ावा देने के लिए प्रचार पदोन्नति उपनाम लिख रहा हूं :: प्रचार के लिए लेकिन सी ++ 11 के लिए। इसका उद्देश्य varidic कार्यों से तर्क पुनर्प्राप्त करते समय चेतावनियों से बचने के लिए है। जैसे 1) एक पूर्णांक से छोटी एक पूर्णांक 2 int करने के लिए प्रोत्साहित किया जाता है) एक नाव दोगुनासी ++ 11 प्रकार की विशेषता एनम कक्षा और नियमित enum
करने के लिए प्रोत्साहित किया जाता है कि:
template <typename T>
std::vector<T> MakeArgVectorV(int aArgCount, va_list aArgList)
{
std::vector<T> args;
while (aArgCount > 0)
{
args.push_back(static_cast<T>(va_arg(aArgList, Promote<T>)));
--aArgCount;
}
return args;
}
टेम्पलेट उर्फ बढ़ावा देना प्रकार variadic तर्क के लिए डिफ़ॉल्ट तर्क पदोन्नति निम्नलिखित को बढ़ावा देता है मेरी समस्या यह है कि एक मानक सी ++ enum पदोन्नत किया जा सकता है लेकिन एक सी ++ 11 enum वर्ग पदोन्नत नहीं किया जाता है (संकलक चेतावनी उत्पन्न नहीं करता है)। मैं एक नियमित enum के साथ काम करने के लिए प्रोत्साहित करना चाहता हूं लेकिन एक सी ++ 11 enum वर्ग अनदेखा।
मैं अपने प्रचार टेम्पलेट उपनाम में एनम कक्षा और एक enum के बीच अंतर कैसे बता सकता हूं?
असली समस्या यह है कि आप 'std :: startizer_list' और/या विविध टेम्पलेट्स के बजाय' va_arg's का उपयोग कर रहे हैं। – Fanael
टिप के लिए धन्यवाद लेकिन मेरे पास va_list है क्योंकि मैं एक सी इंटरफ़ेस के साथ काम कर रहा हूं। – Sam
@ सैम: क्या मेरा जवाब आपकी समस्या को हल कर रहा है? –