При условии, что ваша библиотека использует только C ++ 11 в своей реализации и не раскрывает средства или типы C ++ 11 публично, особенно если вы используете статическую связь, тогда да, это возможно и даже стандартно.
Рассмотрим распространенный случай, когда библиотека предоставляет интерфейс уровня C (который может использоваться самыми разными клиентами), но который реализован внутри C ++. Клиентам, которые ссылаются на такую библиотеку, нужно беспокоиться только об общедоступном двоичном API (экспортируемых функциях), который вы должны использовать как устаревший C / C ++ для максимальной совместимости. Java-программа может ссылаться на API уровня C, которые внутренне реализованы на C ++. Это не означает, что Java должна «поддерживать C ++». Точно так же клиент C / C ++ старого стиля может ссылаться на API уровня C или уровня C ++, который внутренне использует более авангардную версию библиотек C ++ или любых других библиотек. Две отдельные вещи: что требуется для связи с интерфейсом библиотеки, и что внутренняя ссылка на библиотеку (или статическая загрузка).
Вы просто не подвергаете клиентов вашей библиотеки зависимостям вашей реализации.
Если вы можете статически связать свои зависимости (C ++ 11 или что-то еще) с вашей библиотекой, это чисто и автономно. Библиотека - это настоящий черный ящик: ничего, кроме байт-кода. Но даже если ваша библиотека связывается с вашими зависимостями через «неявную динамическую» связь (не путать с типом explicity LoadLibrary / GetProcAddress и аналогичными методами в * nix и OS X), старые клиенты все равно должны иметь возможность ссылаться на эту библиотеку. общедоступный интерфейс, даже если они не могут ссылаться на библиотеки, от которых зависит библиотека .