template-vs2010中非类型模板参数特化问题

问题描述

vs2010中非类型模板参数特化问题

请高人解答:
在vs2010中写一个关于模板的代码,大致如下

通用版本
template< int dimen >
float CalcMatrixDet(float p[][])
{

}

特化版本
template< >
float CalcMatrixDet< 2 >(float p[2][2])
{

}

编译出错:

求指点,错在哪里?特化版本应该怎么写?

解决方案

特化了以后就不要加模板了

解决方案二:

你使用模板的姿势不对吧,应该像下面这样:

 template< int dimen >
float CalcMatrixDet(float p[][dimen])
{
}

float CalcMatrixDet(float p[2][2])
{
}
时间: 2024-07-30 11:46:32

template-vs2010中非类型模板参数特化问题的相关文章

C++中非类型模板参数(nontype template parameters) 的使用

非类型模板参数(nontype template parameters), 可以使用整型类型(integral type),指针(pointer) 或者是 引用(reference); 绑定非类型整数形参(nontype integral parameter) 的 实参(argument) 必须是常量表达式(constant expression, constexpr); 不能把普通的局部对象或者动态对象 绑定 指针或引用的非类型形参, 可以使用全局类型进行绑定; 关于类模板(class tem

C++非类型模板参数

对 于函数模板与类模板,模板参数并不局限于类型,普通值也可以作为模板参数.在基于类型参数的模板中,你定义了一些具体的细节来加以确定代码,直到代码被调 用时这些细节才被真正的确定.但是在这里,我们面对的是这些细节是值,而不是类型,当要使用基于值的模板时,必须显式地指定这些值,才能够对模板进行实例 化.  本文地址:http://www.cnblogs.com/archimedes/p/cpp-template-type.html,转载请注明源地址. 在上篇文章(C++类模板)中我们介绍了一个sta

非类型模板参数

对于函数模板与类模板,模板参数并不局限于类型,普通值也可以作为模板参数.在基于类型参数的模板中,你定义了一些具体的细节来加以确定代码,直到代码被调用时这些细节才被真正的确定.但是在这里,我们面对的是这些细节是值,而不是类型,当要使用基于值的模板时,必须显式地指定这些值,才能够对模板进行实例化. 非类型的类模板参数   创建类的头文件 #include<stdexcept> #include<iostream> using namespace std; template<typ

C++模板的特化详解(函数模版特殊,类模版特化)

模版与特化的概念 函数模版与类模版 C++中模板分为函数模板和类模板 函数模板:是一种抽象函数定义,它代表一类同构函数. 类模板:是一种更高层次的抽象的类定义. 特化的概念 所谓特化,就是将泛型的东东搞得具体化一些,从字面上来解释,就是为已有的模板参数进行一些使其特殊化的指定,使得以前不受任何约束的模板参数,或受到特定的修饰(例如const或者摇身一变成为了指针之类的东东,甚至是经过别的模板类包装之后的模板类型)或完全被指定了下来. 模板特化的分类 针对特化的对象不同,分为两类:函数模板的特化和

C++模板之特化与偏特化详解_C 语言

前言 说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过:对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,的确是我的盲区,那天在群里讨论这个问题,自己对于这部分确实没有掌握,又联想到在<STL源码剖析>一书中,对于此也是有着介绍.所以,今天就对此进行详细的总结,以备后忘. C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽

C++之:模板元编程(三) 默认模板参数

一.类模板的默认模板参数原则 1.可以为类模板的类型形参提供默认值,但不能为函数模板的类型形参提供默认值.函数模板和类模板都可以为模板的非类型形参提供默认值. 2.类模板的类型形参默认值形式为: template<class T1, class T2=int> class A{}; 为第二个模板类型形参T2提供int型的默认值. 3.类模板类型形参默认值和函数的默认参数一样,如果有多个类型形参则从第一个形参设定了默认值之后的所有模板形参都要设定默认值,比如 template<class

《C++ Templates中文版》——2.3 模板参数

2.3 模板参数 函数模板有两种类型的参数. 1.模板参数:位于函数模板名称的前面,在一对尖括号内部进行声明: template <typename T> //T是模板参数 2.调用参数:位于函数模板名称之后,在一对圆括号内部进行声明: -max (T const& a, T const& b) //a和b都是调用参数 你可以根据需要声明任意数量的模板参数.然而,在函数模板内部(这一点和类模板有区别),不能指定缺省的模板实参[4].例如,你可以定义一个"两个调用参数的

PHPLIB Template入门系列之模板嵌套

在PHP程序里,我们常常会把"公用代码"或"公用部分"写进一个文件里,前者象我们的系统配置文件,比如config.php,或者公共函数都写入一个functions.php文件里;后者象一个站点都需要用到的页面头部,尾部.这样做的好处是可以很方便的维护站点,而如果这个公用部分要有所改动,无需再去改每一个页面,大大减少了我们的工作量. PHPLIB Template入门系列 - 4 模板嵌套[楼 主] 在PHP程序里,我们常常会把"公用代码"或&qu

请问如何修改SAP中 QC20的输出类型模板

问题描述 如题,请教如何修改SAP中QC20的输出类型模板,以前从来没碰到过,网上资料也很少,不知怎么做了 解决方案 解决方案二:你是要修改系统标准的打印报表么?如果是的话,你得找下业务顾问问下,需要在img下将打印相关的参数指定到你自定义的smartform下就OK了.