मैंने सोचा कि यह एक बहुत ही बुनियादी सवाल है लेकिन मुझे कुछ ऐसा नहीं मिला।टेम्पलेट पैरामीटर स्थिरता क्यों खो रहा है?
निम्नलिखित कोड संकलन नहीं करता है (C3668)
struct Param
{
int a;
int b;
};
template <typename T>
struct Foo
{
virtual void doStuff (const T) const = 0;
};
struct Bar : public Foo<Param&>
{
void doStuff (const Param &) const override
{
/*...*/
}
};
यह
void doStuff (const Param &)
से स्थिरांक मैं यहाँ क्या याद आ रही है हटाने के बाद संकलन होगा? मैं अपने इंटरफेस घोषणा के साथ const Param& in Foo::doStuff
पर लागू करने की अपेक्षा करता हूं। इसके बजाय इसे हटाया जा रहा है।
फ़ंक्शन घोषणाओं में शीर्ष-स्तरीय कॉन्स्ट को अनदेखा नहीं किया जाता है। इसके अलावा, 'कॉन्स टी' का मतलब 'परम और कॉन्स' होगा, न कि परम परम और '। –