क्या सी ++ 11 मानक टेम्पलेटेड यूनियनों के बारे में कुछ भी कहता है? (मैं http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf में कुछ भी नहीं मिल सकता है, लेकिन मैं यह है कि ध्यान से नहीं पढ़ा है।)सी ++ में टेम्पलेटेड यूनियन 11
मैं
template<typename T>
union u {
T a;
char b;
};
template<typename T>
u<T> make_u(T t) {
return { .a = t };
}
int main() {
return make_u<int>(1).a;
}
इस कोड icpc -std=c++11
का कारण बनता है error: a designator into a template-dependent type is not allowed
, g++ -std=c++0x
error: expected primary-expression before ‘.’ token
कहने के लिए कहने के लिए है, और g++ -std=c++11
(संस्करण 4.8.0 (प्रयोगात्मक)) internal compiler error: in lookup_field_1, at cp/search.c:387
कहने के लिए। मैं को t
के साथ बदलकर इसे प्राप्त कर सकता हूं। हालांकि, मैं उन क्षेत्रों के लिए ऐसा नहीं कर सका जो संघ के पहले सदस्य नहीं हैं। क्या टेम्पलेट यूनियन में पहले व्यक्ति के अलावा कुछ सदस्य चुनने का कोई तरीका है, जहां प्रासंगिक सदस्य टेम्पलेट-निर्भर है? (मैं निश्चित रूप से, स्टैक पर एक संघ घोषित कर सकता हूं, और सदस्य को इच्छित मूल्य के बराबर सेट कर सकता हूं। लेकिन मैं इसे प्रारंभकर्ता सूची में या constexpr
फ़ंक्शन में नहीं कर सका।)
टेम्पलेटेड यूनियन पर सामान्य प्रश्न: http://stackoverflow.com/q/20743582/1147772 – Drax