Функция тестирования с BOOST.Test - PullRequest
1 голос
/ 27 ноября 2010

У меня есть fnc:

template<class T, T constraint>
inline void CheckSize(const T& value)
{
 if (value < constraint)
 {
  throw BadSize_ex(value);
 }
}

, но я не могу проверить его с помощью Boost.Что я делаю, это ():

BOOST_REQUIRE_THROW(CheckSize<int,2>(1),std::BadSize_ex);

Где проблема?но я получаю множество ошибок без майнинга типа ',' пропущенных раньше ';'.

Ошибки (Некоторые из них, но все они из этого парка шаров)
Ошибка 5 ошибка C2143: синтаксическая ошибка: отсутствует ',' before ';'
Ошибка6 ошибка C2143: синтаксическая ошибка: отсутствует '>' перед '{'
Ошибка 7 ошибка C2143: синтаксическая ошибка: отсутствует ';'перед '{'
Ошибка 8, ошибка C2143: синтаксическая ошибка: отсутствует ',' before ')'
Ошибка 45, ошибка C2143: синтаксическая ошибка: отсутствует ';'до '}'
Ошибка 46 ошибка C1004: обнаружен неожиданный конец файла

Ответы [ 2 ]

1 голос
/ 27 ноября 2010

Это запятая между параметрами шаблона. Попробуйте с дополнительным паратезом:

BOOST_REQUIRE_THROW( (CheckSize<int,2>(1)),std::BadSize_ex);
0 голосов
/ 27 ноября 2010

Вам необходимо использовать BOOST_PP_COMMA () вместо, если вы хотите передавать запятые в параметрах, а не для разделения параметров.Это в основном потому, что препроцессор не может распознать разделение параметров шаблона над разделением параметров макросов.

...