การให้ไลบรารี่ของคุณใช้ C ++ 11 ในการนำไปใช้เท่านั้นและจะไม่เปิดเผยสิ่งอำนวยความสะดวกหรือประเภท C ++ 11 สู่สาธารณะและโดยเฉพาะอย่างยิ่งถ้าคุณใช้การเชื่อมโยงแบบสแตติก
พิจารณากรณีทั่วไปที่ไลบรารีเปิดเผยอินเตอร์เฟสระดับ C (เพื่อให้สามารถใช้งานได้โดยไคลเอนต์หลากหลายที่สุด) แต่จะถูกนำไปใช้ภายในใน C ++ ลูกค้าที่เชื่อมโยงกับห้องสมุดดังกล่าวจำเป็นต้องกังวลเกี่ยวกับ API สาธารณะไบนารี (ฟังก์ชั่นที่ส่งออก) เท่านั้นซึ่งคุณจะถูก จำกัด ให้เป็นมรดก C / C ++ สำหรับความเข้ากันได้สูงสุด โปรแกรม Java สามารถเชื่อมโยงกับ C-level APIs ซึ่งถูกนำไปใช้ภายในใน C ++ นี่ไม่ได้หมายความว่า Java จำเป็นต้อง "รองรับ C ++" ในทำนองเดียวกันไคลเอนต์ C / C ++ แบบเก่าสามารถเชื่อมโยงกับ C-level หรือ C ++ - ระดับ API ซึ่งภายในใช้ C ++ libs รุ่นภายในเพิ่มเติมหรือ libs อื่น ๆ สองสิ่งที่แยกจากกัน: สิ่งที่จำเป็นในการเชื่อมโยงไปยังส่วนต่อประสานของห้องสมุดและสิ่งที่ตัวห้องสมุดเองเชื่อมโยงไปยังภายใน (หรือดึงแบบคงที่)
คุณไม่ได้เปิดเผยลูกค้าของห้องสมุดของคุณต่อการพึ่งพาของการใช้งานของคุณ
หากคุณสามารถเชื่อมโยงการพึ่งพา (C ++ 11 หรืออะไรก็ได้) กับห้องสมุดของคุณแบบคงที่สิ่งนี้จะสะอาดและอยู่ในตัวเอง ห้องสมุดเป็นกล่องดำจริง: ไม่มีอะไรนอกจากไบต์ แต่แม้ว่าไลบรารีของคุณจะเชื่อมโยงไปยังการพึ่งพาของคุณผ่านการเชื่อมโยง "แบบไดนามิกโดยนัย" (เพื่อไม่ให้สับสนกับชนิดของ LoadLibrary / GetProcAddress อธิบายและวิธีการที่คล้ายกันใน * nix และ OS X) ลูกค้าที่มีอายุมากกว่าควรจะสามารถเชื่อมโยงไปยังห้องสมุด อินเตอร์เฟซที่สาธารณะแม้ว่าพวกเขาจะไม่สามารถเชื่อมโยงไปยังห้องสมุดห้องสมุดขึ้นอยู่กับ