相关疑难解决方法(0)

如何显式实例化模板函数?

我有一个带有一个参数的模板函数.我必须实例化该函数而不调用该函数意味着我必须实例化.

我有这个功能:

template <class T> int function_name(T a) {}
Run Code Online (Sandbox Code Playgroud)

我实例化了这样的函数:

template int function_name<int>(int);
Run Code Online (Sandbox Code Playgroud)

但是我遇到了以下错误:

error: expected primary-expression before 'template'
error: expected `;' before 'template'
Run Code Online (Sandbox Code Playgroud)

c++ templates

110
推荐指数
3
解决办法
7万
查看次数

while循环需要显式条件,for循环没有,为什么?

在C++中,允许在for循环中具有空条件,例如在for (;;)或中for (int x = 0;; ++x).但你做不到while ().

当在for循环中省略条件时,假定条件为true(因此循环永远循环).为什么这不是while循环的情况,也就是说,背后的论点是什么,不让它while ()成为别名while (true)

c++ syntax loops

22
推荐指数
3
解决办法
1494
查看次数

为什么初始化列表不能是main的参数?怎么建议呢?

有效的C++ main签名如下:

int main()
int main(int argc, char *argv[])
int main(int argc, char **argv)
Run Code Online (Sandbox Code Playgroud)

但是不允许声明main获取初始化列表:

int main(std::initializer_list<char *> args)
Run Code Online (Sandbox Code Playgroud)

AFAIK初始化列表可以实现为一对指针或指针(可以是argv参数)加上一个长度(这可以从argc参数中推导出来),其存储可以是自动,临时或静态只读存储器视情况而定.

所以我认为一个std::initializer_list<char *>可以处理和管理没有任何问题的命令行参数,然后我想知道为什么这个假设的main签名没有在C++ 11标准的初始化列表批准后添加,因为我问:

  • 允许初始化列表作为main唯一参数的缺点或问题是什么?(我想不到任何事).
  • 哪个是向标准委员会提出此增加(或任何其他变更)的正确方法?

c++ standards program-entry-point initializer-list c++11

5
推荐指数
1
解决办法
357
查看次数