相关疑难解决方法(0)

什么是模板推导中的部分排序程序

阅读C++ 11标准我无法完全理解以下语句的含义.例子非常受欢迎.

两组类型用于确定部分排序.对于涉及的每个模板,都有原始函数类型和转换后的函数类型.[注意:转换类型的创建在14.5.6.2中描述. - 结束注释]演绎过程使用变换后的类型作为参数模板,将另一个模板的原始类型用作参数模板.对于部分排序比较中涉及的每种类型,此过程完成两次:一次使用转换的模板-1作为参数模板,使用template-2作为参数模板,再次使用转换的模板-2作为参数模板和模板-1作为参数模板
- N3242 14.8.2.4.2

c++ templates partial-ordering c++11 template-argument-deduction

34
推荐指数
1
解决办法
3210
查看次数

为什么隐式类型转换在模板推导中不起作用?

在下面的代码中,我想通过隐式转换intScalar<int>对象来调用模板函数.

#include<iostream>
using namespace std;

template<typename Dtype>
class Scalar{
public:
  Scalar(Dtype v) : value_(v){}
private:
  Dtype value_;
};

template<typename Dtype>
void func(int a, Scalar<Dtype> b){ 
  cout << "ok" <<endl;
}

int main(){
  int a = 1;
  func(a, 2); 
  //int b = 2;
  //func(a, b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么模板参数推导/替换失败?评论代码也是错误的.

test.cpp: In function ‘int main()’:
test.cpp:19:12: error: no matching function for call to ‘func(int&, int)’
   func(a, 2);
            ^
test.cpp:19:12: note: candidate is:
test.cpp:13:6: note: template<class Dtype> void func(int, …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

12
推荐指数
1
解决办法
607
查看次数