सी ++ 0x में, कोई एक constexpr std :: tuple बना सकता है, उदा।संकलन समय पर एक constexpr std :: tuple से कैसे पूछें?
#include <tuple>
constexpr int i = 10;
constexpr float f = 2.4f;
constexpr double d = -10.4;
constexpr std::tuple<int, float, double> tup(i, f, d);
कोई भी रनटाइम पर std :: tuple से पूछताछ कर सकता है, उदा।
int i2 = std::get<0>(tup);
लेकिन यह संकलन समय पर यह क्वेरी करने के लिए संभव नहीं है, उदाहरण के लिए, के माध्यम से
constexpr int i2 = std::get<0>(tup);
एक संकलन त्रुटि (कम से कम नवीनतम जी ++ स्नैपशॉट 2011-02-19) के साथ फेंक देते हैं।
क्या संकलन समय पर constexpr std :: tuple से पूछने का कोई अन्य तरीका है?
और यदि नहीं, तो क्या कोई वैचारिक कारण है कि किसी को इसकी पूछताछ क्यों नहीं की जाती है?
(मैं, std :: टपल, जैसे का उपयोग कर से बचने के बारे में पता कर रहा हूँ बजाय बढ़ावा :: एमपीएल या बढ़ावा देने :: संलयन का उपयोग करके, लेकिन किसी भी तरह यह नए मानक में टपल वर्ग उपयोग करने के लिए नहीं गलत लग रहा है .. ।)।
वैसे, किसी को पता है क्यों
constexpr std::tuple<int, float, double> tup(i, f, d);
ठीक संकलित, लेकिन
constexpr std::tuple<int, float, double> tup(10, 2.4f, -10.4);
नहीं
?
बहुत पहले से धन्यवाद! - लार्स
n3225.pdf में, केवल डिफ़ॉल्ट कन्स्ट्रक्टर को constexpr चिह्नित किया जाता है। शायद इस सुविधा का उपयोग करना बहुत जल्दी है? – UncleBens