महत्व देता कोड compiles successfully both with clang++ 5.0.0 and g++ 7.2 (-std=c++17 -Wall -Wextra -Werror -pedantic-errors -O0
संकलन झंडे के साथ) के बाद:समारोह मापदंडों और वापसी के रूप में अधूरा प्रकार
struct Foo;
struct Bar
{
Foo get() const;
void set(Foo);
};
struct Foo
{
};
Foo Bar::get() const
{
return {};
}
void Bar::set(Foo)
{
}
int main()
{
Bar bar{};
(void)bar.get();
bar.set(Foo{});
}
यह समारोह पैरामीटर के रूप में अधूरा प्रकार का उपयोग करें और मूल्यों वापस जाने के लिए मान्य है? सी ++ इस पर क्या कहता है?
यह मूल रूप से आप किसी भी शीर्षलेख में क्या करते हैं ... –
@ Jaa-c यह मूर्खतापूर्ण लग सकता है लेकिन मैंने कभी भी मेरे शीर्षलेख फ़ाइलों में फ़ंक्शन रिटर्न प्रकार या पैरामीटर प्रकार के रूप में अपूर्ण प्रकारों का उपयोग नहीं किया है। – Constructor
विचार यह है कि आप उन सभी को नहीं बनाते हैं, जो संभवतः परोक्ष रूप से, आपके हेडर को शामिल करते हैं * * को * इसके द्वारा उपयोग किए जाने वाले हर प्रकार की पूर्ण परिभाषाओं को पार्स करना पड़ता है, क्योंकि वे परिभाषाओं की आवश्यकता वाले कार्यों का उपयोग नहीं कर सकते हैं। और यदि वे * करते हैं, तो वे पूरी परिभाषा स्वयं शामिल कर सकते हैं। मुझे लगता है कि बहस जंगली और हमेशा के लिए गुस्से में है कि क्या आपके उपयोगकर्ताओं की अपेक्षा करना अच्छा है। आंतरिक रूप से उपयोग किए जाने वाले हेडर के लिए, मैं कहूंगा कि यह कोई ब्रेनर नहीं है। –