我怎么知道我应该使用哪个C ++标准版本来构建哪个版本的Boost?

时间:2017-01-09 09:54:35

标签: c++ c++11 boost build configuration

当您下载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吗?我该怎么说?

3 个答案:

答案 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