使用BOOST.Test测试功能

时间:2010-11-27 20:28:38

标签: c++ testing boost

我有一个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:语法错误:在'之前缺少',';' 错误6错误C2143:语法错误:缺少'&gt;'在'{'之前 错误7错误C2143:语法错误:缺少';'在'{'之前 错误8错误C2143:语法错误:缺少','之前')'
错误45错误C2143:语法错误:缺少';'在'}'之前 错误46错误C1004:发现意外的文件结尾

2 个答案:

答案 0 :(得分:1)

它是模板参数之间的逗号。尝试额外的paranthesis:

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

答案 1 :(得分:0)

如果要在参数内传递逗号而不是分隔参数,则需要使用BOOST_PP_COMMA()代替。这基本上是因为预处理器无法识别模板参数分隔宏参数分隔。