- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
下面的代码怎么错了?模板接受哪种类型的参数?
class MyClass
{
int var;
};
template <MyClass a> struct s
{
};
int main()
{
MyClass var;
struct s<var>;
return 0;
}
最佳答案
非类型模板参数有约束,不是什么都能用。特别是,它们必须是编译时常量,这不是你的情况。关于您的模板定义:
template <MyClass a> struct s
// ^^^^^^^
{
};
请参阅 C++11 标准的第 14.1/4 段:
A non-type template-parameter shall have one of the following (optionally cv-qualified) types:
— integral or enumeration type,
— pointer to object or pointer to function,
— lvalue reference to object or lvalue reference to function,
— pointer to member,
— std::nullptr_t.
如您所见,不允许使用用户定义的类型。关于模板的实例化,则:
struct s<var>;
// ^^^ You most likely meant something like s<var> obj, but nevermind
参见 C++11 标准的第 14.3.2/1 段:
A template-argument for a non-type, non-template template-parameter shall be one of:
— for a non-type template-parameter of integral or enumeration type, a converted constant expression (5.19) of the type of the template-parameter; or
— the name of a non-type template-parameter; or
— a constant expression (5.19) that designates the address of an object with static storage duration and external or internal linkage or a function with external or internal linkage, including function templates and function template-ids but excluding non-static class members, expressed (ignoring parentheses) as & id-expression, except that the & may be omitted if the name refers to a function or array and shall be omitted if the corresponding template-parameter is a reference; or
— a constant expression that evaluates to a null pointer value (4.10); or
— a constant expression that evaluates to a null member pointer value (4.11); or
— a pointer to member expressed as described in 5.3.1.
关于c++ - 模板不能接受对象作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175203/
我正在创建一个基于 WebView 的 Android 应用程序,使用户能够登录移动运营商。当我运行该应用程序时,WebView 打开网站,但我收到一条消息,指出 WebView 不允许使用 cook
我试图在 3000 毫秒后打开 onMouseOver 的 href。但它只是弹出一个空白窗口。我错过了什么? HTML: My Rec JavaScript: var Popup = null; f
为什么它工作得很好 from pyspark.sql.types import * l=[("foo",83.33)] schema = StructType([ StructField("ty
Go 官方网站 writes as follows : As the Go specification says, the method set of a type T consists of all
public class MyDrawPanel extends JPanel { public void paintComponent(Graphics g){ Graphi
为什么它工作得很好 from pyspark.sql.types import * l=[("foo",83.33)] schema = StructType([ StructField("ty
以下代码应该可以工作,因为 join 接受迭代器作为参数: import static org.apache.commons.lang.StringUtils.join; import java.te
我想知道为什么 Collection.addAll() 方法只接受其他 Collection 而不是 Iterable。这是为什么呢? 对于 Iterables 有什么类似的方法吗? 最佳答案 大概是
如何解决这个问题?如果我用 this 替换它。它在构建器上创建了更多错误。我该如何解决? java类中的所有代码。在这种情况下,功能围绕着 onStartCommand。 public class
我正在尝试为我的应用添加一个添加到愿望 list 的功能,但我一直收到此错误: Exception [EclipseLink-4002] (Eclipse Persistence Services -
我正在做一个文本分类任务。现在我想使用 ensemble.AdaBoostClassifier 和 LinearSVC 作为 base_estimator。但是,当我尝试运行代码时 clf = Ada
/更新:问题细化为:无法打开授权 key 。/ 我在 Virtualbox 中有一个 Ubuntu 服务器,我尝试通过 ssh 登录,但每次询问登录密码时,pubkey 都不起作用。 概要: Vbox
我在尝试连接数据库并从数据库检索数据时遇到此类错误。 executeQuery() 方法不能接受 PreparedStatement 或 CallableStatement 的参数。 我的代码是这样的
我是一名优秀的程序员,十分优秀!