Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 整型常量表达式中不允许使用模板参数_C++_Templates_Compiler Errors_Spidermonkey - Fatal编程技术网

C++ 整型常量表达式中不允许使用模板参数

C++ 整型常量表达式中不允许使用模板参数,c++,templates,compiler-errors,spidermonkey,C++,Templates,Compiler Errors,Spidermonkey,编译此代码时(SpiderMonkey的一部分): 及 模板 静态布尔 GetterImpl(JSContext*cx,CallArgs-args) { JS_断言(IsThisClass(args.thisv()); args.rval().set(ValueGetter(&args.thisv().toObject()); 返回true; } 我在网上找不到任何有用的信息,我正在努力找出问题所在。谁能澄清一下吗 谢谢。 < p>这是有效的,你正在传递一个函数,C++应该把它变成函数指针。也

编译此代码时(SpiderMonkey的一部分):

模板
静态布尔
GetterImpl(JSContext*cx,CallArgs-args)
{
JS_断言(IsThisClass(args.thisv());
args.rval().set(ValueGetter(&args.thisv().toObject());
返回true;
}
我在网上找不到任何有用的信息,我正在努力找出问题所在。谁能澄清一下吗


谢谢。

< p>这是有效的,你正在传递一个函数,C++应该把它变成函数指针。也许可以将该函数指针显式化:

template<Value (*ValueGetter)(JSObject *obj)>
模板

> > p>这是有效的,你正在传递一个函数,C++应该把它变成函数指针。也许可以将该函数指针显式化:

template<Value (*ValueGetter)(JSObject *obj)>
模板

> > p>这是有效的,你正在传递一个函数,C++应该把它变成函数指针。也许可以将该函数指针显式化:

template<Value (*ValueGetter)(JSObject *obj)>
模板

> > p>这是有效的,你正在传递一个函数,C++应该把它变成函数指针。也许可以将该函数指针显式化:

template<Value (*ValueGetter)(JSObject *obj)>
模板
[C++11:14.1/4]:
非类型模板参数应具有以下类型之一(可选cv限定)类型:

  • 整型或枚举型
  • 指向对象的指针或指向函数的指针
  • 对对象的左值引用或对函数的左值引用
  • 指向成员的指针
  • std::nullptr\t
但指向函数的指针不是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
看起来是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
然后再说一遍:

[C++11:14.1/8]:
一个类型为
T
的数组或“函数返回
T
的非类型模板参数被调整为“指向
T
的指针”或“指向函数返回
T的指针”

在C++03中,在相同的位置存在相同的措辞

因此,您的代码是有效的,并且您手头有一个编译器错误。

也许您可以通过自己调整模板参数来解决这个问题,尽管这取决于bug是什么

[C++11:14.1/4]:
非类型模板参数应具有以下类型之一(可选cv限定)类型:

  • 整型或枚举型
  • 指向对象的指针或指向函数的指针
  • 对对象的左值引用或对函数的左值引用
  • 指向成员的指针
  • std::nullptr\t
但指向函数的指针不是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
看起来是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
然后再说一遍:

[C++11:14.1/8]:
一个类型为
T
的数组或“函数返回
T
的非类型模板参数被调整为“指向
T
的指针”或“指向函数返回
T的指针”

在C++03中,在相同的位置存在相同的措辞

因此,您的代码是有效的,并且您手头有一个编译器错误。

也许您可以通过自己调整模板参数来解决这个问题,尽管这取决于bug是什么

[C++11:14.1/4]:
非类型模板参数应具有以下类型之一(可选cv限定)类型:

  • 整型或枚举型
  • 指向对象的指针或指向函数的指针
  • 对对象的左值引用或对函数的左值引用
  • 指向成员的指针
  • std::nullptr\t
但指向函数的指针不是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
看起来是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
然后再说一遍:

[C++11:14.1/8]:
一个类型为
T
的数组或“函数返回
T
的非类型模板参数被调整为“指向
T
的指针”或“指向函数返回
T的指针”

在C++03中,在相同的位置存在相同的措辞

因此,您的代码是有效的,并且您手头有一个编译器错误。

也许您可以通过自己调整模板参数来解决这个问题,尽管这取决于bug是什么

[C++11:14.1/4]:
非类型模板参数应具有以下类型之一(可选cv限定)类型:

  • 整型或枚举型
  • 指向对象的指针或指向函数的指针
  • 对对象的左值引用或对函数的左值引用
  • 指向成员的指针
  • std::nullptr\t
但指向函数的指针不是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
看起来是这样的:

Value ValueGetter(JSObject *obj)
Value (*ValueGetter)(JSObject *obj)
然后再说一遍:

[C++11:14.1/8]:
一个类型为
T
的数组或“函数返回
T
的非类型模板参数被调整为“指向
T
的指针”或“指向函数返回
T的指针”

在C++03中,在相同的位置存在相同的措辞

因此,您的代码是有效的,并且您手头有一个编译器错误。

也许你可以通过自己调整模板参数来解决这个问题,尽管这取决于错误是什么。

模板
:这意味着什么?可能是okd编译器(4.1.1)。试着传递一个函数指针而不是一个函数?2006不是很旧吗?最好是发布一个函数指针。什么是ThisTypeArray::GetterImpl
?我们不能真正看到模板参数的存在是一个问题:pr