gpt4 book ai didi

c++ - 检查 std::vector 要求的宏

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:50:26 24 4
gpt4 key购买 nike

我有一个不可变类 - 所有成员都是 const。因为它是不可变的,所以没有默认构造函数,也没有复制赋值。在 C++11 中,我在 std::vector 中使用此类没有任何问题。

现在我需要在只支持C++03的环境下编译代码。显然我的课不是CopyAssignable , 而 C++03 std::vector 需要这个,我不能将类的实例放在 vector 中。

由于代码将在 C++11 友好的编译器上维护,并且仅在 C++03 环境中编译和运行,我认为使这项工作最简单的方法是删除 C++03 中的 const 修饰符。这将使类 CopyAssignable 可用并在 C++03 中工作。当然,在 C++11 中,我仍然希望类是不可变的。

我浏览了长长的列表 Boost C++11 Macros ,但找不到可以告诉我 std::vector 是否需要 CopyAssignable 类型的信息。

有没有办法做到这一点,或者我应该只引入我自己的将在编译期间设置的宏?

最佳答案

可能最简单的方法就是检查 C++ 版本; #if __cplusplus < 201103L应该足够了。大概没有 Boost 宏检查这一点,因为所有 C++11 编译器在这方面都是兼容的。

关于c++ - 检查 std::vector 要求的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30049206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com