我有一个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:发现意外的文件结尾
答案 0 :(得分:1)
它是模板参数之间的逗号。尝试额外的paranthesis:
BOOST_REQUIRE_THROW( (CheckSize<int,2>(1)),std::BadSize_ex);
答案 1 :(得分:0)
如果要在参数内传递逗号而不是分隔参数,则需要使用BOOST_PP_COMMA()代替。这基本上是因为预处理器无法识别模板参数分隔宏参数分隔。