声明“ t”的两个或多个数据类型

时间:2019-07-27 08:58:50

标签: c++ data-structures inline

我正在尝试编写自己的编码模板进行编程。 因此,基本上,我正在尝试编写内联或预处理程序以获取编码问题中的测试用例。

所以通常我喜欢这样-

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 ++语言的新手

1 个答案:

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