1

我在特定的企业环境中工作,目前没有 C++11 基础架构。最近我开始编写单元测试并决定使用 Boost.Test 框架,因为 Boost 以其可移植性和企业就绪性而闻名。虽然一般的 BOOST_AUTO_TEST_CASE 工作得很好,但我发现数据集测试(BOOST_DATA_TEST_CASE)最终boost/test/data/monomorphic/fwd.hpp包括<tuple>无条件包含在内。DATA_TEST_CASE 是否确实需要 C++11?有没有办法使用 BOOST_DATA_TEST_CASE 并利用 Boost 的内置元组和其他附带的库来符合 C++03 标准?

4

1 回答 1

1

Boost 通常不会故意破坏现有库中的 c++11 兼容性(尽管这种态度正在发生变化,您应该期待未来更多的 c++11 要求,请参阅关于 boost 开发人员邮件列表的讨论)。

但是,现有库的新库和新功能不遵守此限制,如果这使得实现更容易/更简单/更快/更可靠等,通常需要 c++11。

BOOST_DATA_TEST_CASE仅在 boost 1.59.0 中引入,因此很可能使用 c++11。

一般的建议是,如果使用旧编译器,请使用旧版本的 boost。如果您想要新功能升级您的编译器并使用最新版本的 boost。

于 2019-01-15T17:31:12.340 回答