Desde que sua biblioteca use apenas C ++ 11 em sua implementação e não exponha recursos ou tipos de C ++ 11 publicamente, e especialmente se você usar ligação estática, sim, isso é possível e até padrão.
Considere o caso comum em que uma biblioteca expõe uma interface de nível C (para ser usada pela maior variedade de clientes), mas que é implementada internamente no C ++. Os clientes vinculados a essa biblioteca precisam apenas se preocupar com a API binária pública (funções exportadas), que você restringiu a ser C / C ++ herdado para obter compatibilidade máxima. Um programa Java pode vincular-se a APIs de nível C que são implementadas internamente em C ++. Isso não significa que o Java precise "suportar C ++". Da mesma forma, um cliente C / C ++ à moda antiga pode vincular-se a uma API no nível C ou C ++, que internamente usa alguma versão mais avant-garde das bibliotecas C ++ ou quaisquer outras bibliotecas. Duas coisas distintas: o que é necessário para vincular à interface da biblioteca e o que a própria biblioteca vincula internamente (ou extrai estaticamente).
Você simplesmente não expõe os clientes da sua biblioteca às dependências da sua implementação.
Se você pode vincular estaticamente suas dependências (C ++ 11 ou qualquer outra coisa) à sua biblioteca, isso é limpo e independente. A biblioteca é uma verdadeira caixa preta: nada além de código de código. Porém, mesmo que sua biblioteca se vincule a suas dependências por meio de uma ligação "dinâmica implícita" (para não confundir com o tipo explícito LoadLibrary / GetProcAddress e os métodos semelhantes no * nix e OS X), os clientes mais antigos ainda deverão poder se conectar aos interface pública, mesmo que não pudessem vincular às bibliotecas das quais a biblioteca depende .