सी ++ 11 वाक्यविन्यास के बारे में सरल सवाल। वहाँ एक नमूना कोड (source से एक कम)ब्रेसिज़ के साथ कॉलिंग सीटीआर
struct Wanderer
{
explicit Wanderer(std::vector<std::function<void (float)>> & update_loop)
{
update_loop.emplace_back([this](float dt) { update(dt); });
}
void update(float dt);
};
int main()
{
std::vector<std::function<void (float)>> update_loop;
Wanderer wanderer{update_loop}; // why {} ???
}
मुझे पता करना चाहते हैं, यह कैसे Wanderer wanderer{update_loop};
तरह कर्ली कोष्ठक के साथ संभव कॉल निर्माता यह न तो प्रारंभकर्ता सूची है, और न ही वर्दी प्रारंभ हो सकता है। यह क्या बात है?
लेकिन यह समान प्रारंभिक है। ब्रेस का इस्तेमाल कन्स्ट्रक्टर को कॉल करने के लिए किया जा सकता है, हालांकि उस प्रकार के 'std :: startizer_list' लेने वाले कन्स्ट्रक्टर को हमेशा पसंद किया जाता है। – chris
'// क्यों {} ???' - अच्छा सवाल। 'वंडरर वंडरर (update_loop)' पर इसे प्राथमिकता देने का कोई कारण नहीं है। – ipc
@ipc कुछ मामलों में, यह सबसे परेशान पार्स से बच सकता है। – juanchopanza