मैं निम्नलिखित सरल परिदृश्य है:सिंटेक्स त्रुटि
1>test.cpp(16): error C2059: syntax error : ')'
1> test.cpp(23) : see reference to class template instantiation A<T>' being compiled
:
template< typename T>
struct A
{
A() : action_([&](const T& t) { })
{}
private:
boost::function< void(const T&)> action_;
};
जब विजुअल C++ 2010 संकलन, यह मेरे action_ के निर्माण में एक सिंटैक्स त्रुटि देता है अजीब बात यह है कि एक ही उदाहरण, टेम्पलेट पैरामीटर के साथ, बस ठीक है:
struct A
{
A() : action_([&](const int& t) { })
{}
private:
boost::function< void(const int&)> action_;
};
मुझे पता है कि इस समस्या के लिए एक वैकल्पिक हल निर्माता शरीर में action_ प्रारंभ स्थानांतरित करने के लिए, प्रारंभ सूची के बजाय, नीचे दिए गए कोड में की तरह है:
template< typename T>
struct A
{
A()
{
action_ = [&](const T& t) { };
}
private:
boost::function< void(const T&)> action_;
};
... लेकिन मैं इस तरह के वैकल्पिक हल बचना चाहते हैं।
क्या किसी को ऐसी स्थिति का सामना करना पड़ा? क्या इस तथाकथित वाक्यविन्यास त्रुटि के लिए कोई स्पष्टीकरण/समाधान है?
एफडब्ल्यूआईडब्ल्यू, प्रदान किया गया उदाहरण (लापता '# शामिल' को ठीक करने के बाद) जी ++ 4.6.1 के साथ चेतावनी के बिना संकलित करता है। –
यह विज़ुअल सी ++ 2010 के लिए विशिष्ट है। –