Шаблон тестового примера не работает (что я предполагаю из-за запятой) при использовании boost :: mpl.
Код работает в boost 1.55, поскольку используемое имя тестового примера искаженоназвание шаблона. Но при обновлении до boost 1.64 в качестве имени тестового примера теперь используется выделенное имя IE:
test_case<foo<A,B>>
Код использует этот шаблон
template <bool arg1, typename arg2>
struct test_template: public arg2
{
static const bool isEnabled = arg1;
};
Код теперь объявляет контейнер mpl, содержащийдва созданных шаблона.
using test_templates = boost::mpl::vector<
test_template<true, SPECIALIZED>,
test_template<false, GENERIC>> ;
Код использует BOOST_AUTO_TEST_CASE_TEMPLATE для автоматической регистрации тестовых случаев.
BOOST_AUTO_TEST_CASE_TEMPLATE(my_test, T, test_templates )
{
BOOST_TEST( sizeof(T) == (unsigned)4 );
//This will fail but this test case will not run at all in this example.
}
Теперь тестовые случаи будут называться:
my_test<test_template<true,_SPECIALIZED>>
my_test<test_template<false,_GENERIC>>
Потому чтос именем тестового примера, имеющим запятую в имени, у boost.test возникли проблемы с ним.
Этот код работал Назад в boost 1.55, потому что повысить назначенные имена тестовых наборов, используя искаженные имена созданных шаблонов (это длинное и странное имя, но без запятой)
Есть идеи? Я заглянул в документацию по Boost, и, похоже, нет слов об использовании нескольких параметризованных шаблонов, помещаемых в mpl для использования в тестовом режиме.