2012-12-19 16 views
10

क्या यह एक और मामला है, जहां व्हाइटस्पेस सी ++ में मायने रखती है, या यह एक कंपाइलर बग है? क्या निम्न कोड वाक्य रचनात्मक रूप से सही है?एक और मामला जहां व्हाइटस्पेस मायने रखता है (शायद?)

#include <type_traits> 

template <bool cond> 
using EnableIf = typename std::enable_if<cond, int>::type; 

template <int n, EnableIf<n == 1>=0> 
void func() 
{} 

इंटेल सी ++ संगीतकार इसे संकलित करने में विफल रहता है: "प्रकार विनिर्देशकों का अमान्य संयोजन"। लेकिन हस्ताक्षर में सिंगल व्हाइटस्पेस जोड़ें और यह ठीक से संकलित करता है:

template <int n, EnableIf<n == 1> =0> 
void func() 
{} 
+3

अच्छा, यह ' = 0 होना चाहिए)>' – irrelephant

उत्तर

18

यह एक ऐसा मामला है जहां व्हाइटस्पेस मायने रखता है। संकलक सबसे बड़ा प्रतीक मिलान कर सकता है, इसलिए यह >= से मेल खाता है। व्हाइटस्पेस के कारण आप इसे पर्स कर सकते हैं।

संबंधित मुद्दे