बशर्ते आपकी लाइब्रेरी अपने कार्यान्वयन में केवल C ++ 11 का उपयोग करती है और C ++ 11 सुविधाओं या प्रकारों को सार्वजनिक रूप से उजागर नहीं करती है, और विशेष रूप से यदि आप स्थैतिक लिंकेज का उपयोग करते हैं, तो हाँ, यह संभव है और मानक भी।
उस सामान्य मामले पर विचार करें जहां एक पुस्तकालय सी-स्तरीय इंटरफ़ेस (ग्राहकों की व्यापक विविधता द्वारा प्रयोग करने योग्य) को उजागर करता है, लेकिन जिसे C ++ में आंतरिक रूप से लागू किया जाता है। इस तरह के पुस्तकालय से जुड़ने वाले ग्राहकों को केवल सार्वजनिक बाइनरी एपीआई (निर्यात कार्यों) के बारे में चिंता करने की आवश्यकता होती है, जिसे आपने अधिकतम संगतता के लिए विरासत सी / सी ++ के लिए विवश किया होगा। एक जावा प्रोग्राम सी-लेवल एपीआई से लिंक कर सकता है जो आंतरिक रूप से C ++ में लागू होते हैं। इसका मतलब यह नहीं है कि जावा को "C ++ का समर्थन" करने की आवश्यकता है। इसी तरह, एक पुरानी शैली वाला सी / सी ++ क्लाइंट सी-लेवल या सी ++ - लेवल एपीआई से लिंक कर सकता है, जो आंतरिक रूप से सी ++ के कुछ और एवेंट-गार्डे संस्करण का उपयोग करता है। दो अलग-अलग चीजें: लाइब्रेरी के इंटरफ़ेस से लिंक करने के लिए क्या आवश्यक है, और लाइब्रेरी खुद आंतरिक रूप से क्या लिंक करती है (या स्टैटिक रूप से खींचती है)।
आप बस अपने पुस्तकालय के ग्राहकों को अपने कार्यान्वयन की निर्भरता के लिए उजागर नहीं करते हैं।
यदि आप अपने पुस्तकालय में अपनी निर्भरता (C ++ 11 या अन्य कुछ) को सांख्यिकीय रूप से जोड़ सकते हैं, तो यह स्वच्छ और आत्म-निहित है। पुस्तकालय एक सच्चा ब्लैक बॉक्स है: कुछ भी नहीं लेकिन बायोटेक। लेकिन यहां तक कि अगर आपका पुस्तकालय "अंतर्निहित गतिशील" लिंकेज के माध्यम से आपके आश्रितों से जुड़ता है (अन्वेषण लोडलिफ्ट / गेटप्रोकैड्रेस प्रकार और * nix और OS X पर इसी तरह के तरीकों से भ्रमित नहीं होना चाहिए), तो पुराने ग्राहकों को अभी भी उस लाइब्रेरी से लिंक करने में सक्षम होना चाहिए सार्वजनिक इंटरफ़ेस, भले ही वे लाइब्रेरी से लिंक न कर सकें, लाइब्रेरी निर्भर करती है ।