当您下载Boost源代码时,没有迹象表明您应该使用哪种C ++语言标准版本来构建它。但是 - 显然没有自动选择,因为如果你没有设置,比如至少$A:$A
,那么对C ++ 11功能的一些配置检查就会失败。因此,构建者可以自行决定。
但是 - 我怎么知道哪个C ++标准版本用于哪个Boost版本?在某个地方有桌子吗?
具体来说,我刚刚使用--std = c ++ 14构建了Boost 1.62.0,并且对于不推荐使用public class HibernateConfig {
public static final Properties HIBERNATE_PROPERTIES = readProperties();
private static final String HIBERNATE_PROPERTIES_RESOURCE = "hibernate.properties";
private static Properties readProperties() {
try (BufferedInputStream is = new BufferedInputStream(ClassLoader.getSystemResourceAsStream(HIBERNATE_PROPERTIES_RESOURCE))) {
Properties properties = new Properties();
properties.load(is);
return properties;
} catch (IOException e) {
throw new RuntimeException("Failed to read properties from scr/properties.");
}
}
}
的使用提出了无数警告。那么,我应该坚持使用C ++ 11吗?我该怎么说?
答案 0 :(得分:1)
不幸的是,一些提升开发人员没有使用最新标准(甚至是C ++ 11)更新他们的实现,并解决了您提出的问题。 有一组boost_config个宏可用于保持兼容性。
但通常编译器的问题是使用较旧的编译器而不是更新版本。
答案 1 :(得分:-1)
警告没有错误。 C ++ 14支持std :: auto_ptr,没有任何限制。所以你可以使用C ++ 14,但你不应该在新代码中使用std :: auto_ptr。您也不应该将std :: auto_ptr与C ++ 11一起使用。 编辑:由于OP没有得到胶水。如果两者都支持它,它没有任何区别,他可以使用他喜欢的那个。
答案 2 :(得分:-1)
不了解Boost,但你可以从任何c ++编译器获得c ++版本 -
if( __cplusplus == 201103L ) std::cout << "C++11 " ;
if( __cplusplus == 199711L ) std::cout << "C++98 " ;
//... like this