【发布时间】:2015-05-10 19:14:54
【问题描述】:
有时最好检查某些东西是否无法构建,例如:
// Next line should fail to compile: can't convert const iterator to iterator.
my_new_container_type::iterator it = my_new_container_type::const_iterator();
是否可以将这些类型的东西合并到 CMake/CTest 中?我正在CMakeLists.txt 中寻找类似的东西:
add_build_failure_executable(
test_iterator_conversion_build_failure
iterator_conversion_build_failure.cpp)
add_build_failure_test(
test_iterator_conversion_build_failure
test_iterator_conversion_build_failure)
(当然,据我所知,这些特定的 CMake 指令并不存在。)
【问题讨论】:
-
请注意,您的具体示例可以使用
static_assert(!std::is_convertible_v<container::const_iterator, container::iterator> and !std::is_constructible_v<container::iterator, container::const_iterator>);直接在 C++ 中进行测试,测试隐式和显式转换均失败。如果成员类型不存在,这具有正确失败测试的优势。
标签: c++ cmake automated-tests ctest