c++ - 模板问题

标签 c++ templates

为什么我可以这样做:

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void myfunction (int i) {
  cout << " " << i;
}

int main () {
  vector<int> myvector;
  myvector.push_back(10);
  myvector.push_back(20);
  myvector.push_back(30);

  cout << "myvector contains:";
  for_each (myvector.begin(), myvector.end(), myfunction);//<-------See below
return 0;
}

但不能这样做:

template<class T>
    void myfunction (T i) {
          cout << " " << i;
        }

我怀疑它与 args 推导有关,但令人气愤的是“常规”fnc 被接受而模板不被接受。

最佳答案

问题是您无法创建指向模板函数的指针。不过,您应该能够创建一个指向实例化模板函数的指针。我没试过这个,但以下应该有效:

for_each (myvector.begin(), myvector.end(), myfunction<int>)

关于c++ - 模板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751580/

相关文章:

c++ - 调用AUEffectBase::Render时如何确定激活的输入总线?

c++ - C++ 中 class = void 的用途?

templates - Jade - 在脚本标签内使用 block

c++ - 我做了什么?需要在模板类的方法中实例化派生类

django - 如何在 Django 中制作可重用的模板?

c++ - libpng |建筑的重复符号

c++ - 选择模板化运算符实现

c++ - 将 bitset 转换为 unsigned char,反之亦然

java - 单个方法的调用图(c++ 和 java)

c++ - 使用模板函数指针声明模板函数