Answers:
如果您的库仅在其实现中使用C ++ 11,并且不会公开公开C ++ 11的功能或类型,尤其是如果您使用静态链接,那么可以,甚至是标准的。
考虑一个常见的情况,在该情况下,库公开了C级接口(供最广泛的客户端使用),但在内部用C ++实现。链接到此类库的客户端只需要担心公共二进制API(导出的函数),为了获得最大的兼容性,您必须将其限制为旧版C / C ++。Java程序可以链接到在C ++内部实现的C级API。这并不意味着Java需要“支持C ++”。同样,旧式的C / C ++客户端可以链接到内部使用C ++库或任何其他库的某些更先锋版本的C级或C ++级API。两件分开的事情:链接到库的接口需要什么,以及库本身在内部链接(或静态引入)的东西。
您只是不将库的客户端暴露给实现的依赖项。
如果您可以将依赖项(C ++ 11或其他任何东西)静态链接到您的库中,则这是干净且自包含的。该库是一个真正的黑匣子:只有字节码。但是,即使您的库通过“隐式动态”链接链接到依赖项(不要与显式LoadLibrary / GetProcAddress类型以及* nix和OS X上的类似方法相混淆),较旧的客户端仍应该能够链接到该库的公共接口,即使它们无法链接到库所依赖的库。