Asalkan pustaka Anda hanya menggunakan C ++ 11 dalam implementasinya dan tidak mengekspos fasilitas atau tipe C ++ 11 secara publik, dan terutama jika Anda menggunakan tautan statis, maka ya, ini mungkin dan bahkan standar.
Pertimbangkan kasus umum di mana perpustakaan memperlihatkan antarmuka tingkat-C (agar dapat digunakan oleh berbagai klien terluas) tetapi yang diterapkan secara internal di C ++. Klien yang menautkan ke perpustakaan seperti itu hanya perlu khawatir tentang API biner publik (fungsi yang diekspor), yang akan Anda batasi menjadi C / C ++ lawas untuk kompatibilitas maksimum. Program Java dapat menautkan ke API tingkat-C yang diterapkan secara internal di C ++. Ini tidak berarti bahwa Java perlu "mendukung C ++". Demikian pula, klien C / C ++ gaya lama dapat menautkan ke API level C atau C ++ - level yang secara internal menggunakan beberapa versi lebih baru dari lib C ++ atau lib lainnya. Dua hal terpisah: apa yang diperlukan untuk menautkan ke antarmuka perpustakaan, dan apa yang ditautkan oleh perpustakaan itu sendiri (atau menarik secara statis).
Anda tidak membiarkan klien perpustakaan Anda bergantung pada implementasi Anda.
Jika Anda dapat menautkan dependensi Anda secara statis (C ++ 11 atau apa pun) ke perpustakaan Anda, ini bersih dan mandiri. Perpustakaan adalah kotak hitam sejati: tidak ada tapi bytecode. Tetapi bahkan jika pustaka Anda menautkan ke dependensi Anda melalui tautan "implisit dinamis" (jangan dikacaukan dengan jenis LoadLibrary / GetProcAddress yang jelas dan metode serupa pada * nix dan OS X), klien lama harus tetap dapat menautkan ke pustaka itu antarmuka publik, bahkan jika mereka tidak dapat menautkan ke perpustakaan tempat perpustakaan bergantung .