我正在尝试编写自己的编码模板进行编程。 因此,基本上,我正在尝试编写内联或预处理程序以获取编码问题中的测试用例。
所以通常我喜欢这样-
int t;
cin>>t;
while(t--){
//code
}
#define test int t; cin>>t; while(t--)
inline void test(){int t; cin>>t; while(t--)}
对于第一种情况,错误是-声明中有两个或多个数据类型 的“ t”对于第二种情况,错误为-错误:预期 在“}”令牌之前的主要表达式
我在做什么错?请提出建议。 P.S我是C ++语言的新手
答案 0 :(得分:1)
可以将代码放入函数中
void func(int i)
{.../*code*/... }
然后模板函数将使用此函数,因此它将类似于:
void template_func(void (*f)(int) )
{
int t;
cin>>t;
while(t--)
f(t) ;
}
这将称为:
template_func(func) ;
另一种方法是使用template
的
template<typename Callable>
void template_func(Callable f )
{
int t;
cin>>t;
while(t--)
f(t) ;
}
致电:
template_func(func);
template_func
中包含C ++ 17,std::is_invocable
可用于验证传递的函数是可调用的:
static_assert( std::is_invocable_v< decltype(f), int>) ;