2010-11-27 3 views
1

У меня есть Fnc:функция тестирования с Boost.Test

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); 

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

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

+0

Не могли бы вы высказать свои сообщения об ошибках? – ronag 2010-11-27 20:33:55

ответ

1

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

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

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

Смежные вопросы