Với điều kiện thư viện của bạn chỉ sử dụng C ++ 11 khi triển khai và không để lộ các phương tiện hoặc loại C ++ 11 công khai, và đặc biệt nếu bạn sử dụng liên kết tĩnh, thì có, điều này là có thể và thậm chí là tiêu chuẩn.
Hãy xem xét trường hợp phổ biến khi thư viện hiển thị giao diện cấp C (có thể được sử dụng bởi nhiều khách hàng nhất) nhưng được triển khai nội bộ trong C ++. Các khách hàng liên kết với thư viện như vậy chỉ cần lo lắng về API nhị phân công khai (các hàm được xuất), mà bạn sẽ bị hạn chế là C / C ++ kế thừa để có khả năng tương thích tối đa. Một chương trình Java có thể liên kết với các API cấp độ C được triển khai nội bộ trong C ++. Điều này không có nghĩa là Java cần "hỗ trợ C ++". Tương tự, ứng dụng khách C / C ++ kiểu cũ có thể liên kết với API cấp độ C hoặc C ++, bên trong sử dụng một số phiên bản tiên phong hơn của lib C ++ hoặc bất kỳ lib nào khác. Hai điều riêng biệt: những gì cần thiết để liên kết với giao diện của thư viện và những gì chính thư viện liên kết với (hoặc kéo vào tĩnh).
Bạn chỉ đơn giản là không đưa khách hàng của thư viện của bạn đến các phụ thuộc của việc triển khai.
Nếu bạn có thể liên kết tĩnh các phụ thuộc của bạn (C ++ 11 hoặc bất cứ thứ gì khác) vào thư viện của bạn, thì đây là mục đích rõ ràng và khép kín. Thư viện là một hộp đen thực sự: không có gì ngoài mã byte. Nhưng ngay cả khi thư viện của bạn liên kết với các phụ thuộc của bạn thông qua liên kết "ẩn động" (không bị nhầm lẫn với loại LoadL Library / GetProcAddress và các phương thức tương tự trên * nix và OS X), các máy khách cũ vẫn có thể liên kết với thư viện đó giao diện công cộng, ngay cả khi chúng không thể liên kết đến các thư viện mà thư viện phụ thuộc vào .