问题标签 [variadic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么 `boost::any` 比 `void*` 更好?
与使用and相比,boost::any
和boost::any_cast
提供了哪些固有优势?void*
dynamic_cast
c++ - 重复使用可变参数函数参数不起作用
我有一个尝试将内容记录到控制台和日志文件的功能,但它不起作用。可变长度参数的第二次使用会将垃圾写入控制台。有任何想法吗?
c++ - 包装任何 API 函数
我正在包装 Windows API,我希望使错误检查易于使用且有用。目前,我有一个全局错误对象,具有set
处理新错误的函数。该set
函数接受四个参数:bool Error::set (const int code, const char * file, const char * const function, const int line);
该函数使用文件、函数和行参数以格式良好的消息显示它们。
为了简化错误的设置,有一个宏#define setError() error.set (GetLastError(), __FILE__, __FUNCTION__, __LINE__);
这样我可以setError()
在任何时候通过在调用 API 函数后添加它来响应 API 函数设置的错误。
不幸的是,这会导致代码看起来像这样:
构造函数也存在问题:
如您所见,通过使用成员初始化器语法,我实际上是在限制自己。
解决此问题的一种方法是包装每个 API 函数:
错误消息的function
部分会告诉我是哪个函数导致了错误。当然,这必须是处理这个问题的最糟糕的方法。
解决方案似乎是使用可变参数模板。问题是,我不知道我应该怎么做才能让他们为此工作。我想最终的代码看起来像以下之一:
我已经阅读了有关开始可变参数模板的内容,但它们都让我对如何设置这样的东西一无所知。谁能指出我正确的方向?
我在类似的问题上发现了以下内容:
受访者指出,可变参数模板将是使其足够通用的必要条件。这是一个开始,但我对此事的任何帮助感到迷茫和感激。
c++ - 将变量数组转换为 std::tuple
我正在为用 C 实现的变体类型开发 C++11 包装器。变体类型支持常见的数据类型,如 int、float、string 以及tuples。我有表格基本类型的转换器......
...但我正在努力转换为 std::tuple。
底层 C API 可以通过返回一个 Variants 数组来分解一个元组。它看起来像这样:
现在我认识到我可以为每个大小的元组手动创建模板,但我正在寻找一个可以处理任何大小的元组的可变参数解决方案。关于如何解决这个问题的任何提示?
顺便说一句,我要包装的实际是 Erlang NIF API。
objective-c - 如何在 Objective-C 中覆盖可变参数方法
我正在尝试扩展一个具有可变参数方法的类,例如:
并在子类中通过调用原始方法来覆盖它,例如:
但这不起作用。有人知道如何工作吗?谢谢。
haskell - 可变参数撰写功能?
我正在尝试编写一个可变参数函数组合函数。这基本上是(.)
除了第二个参数函数是可变的。这应该允许如下表达式:
要不就
目前,如果我添加IncoherentInstances
并需要第一个参数函数的非多态实例,我已经达到的效果。
有任何想法吗?甚至可能吗?
c++ - 如何创建一个模板化函数,该函数采用可变数量的参数,将参数传递给对象的正确构造函数?
我有以下模板化功能...
... 分配和设置 C++ 对象以在 Lua 脚本语言中使用。我想扩展这个函数,这样我就可以为对象的构造函数传递参数。它可能看起来像这样:
...并像这样工作:
避免像这样结束的可变参数模板:
会好的。
这在 c++11 中可行吗?
更新:我目前正在使用 -pedantic 打开的 gcc 4.6。非编译器特定的解决方案将是首选。
php - 使用(未知)可变数量的参数调用函数?
我需要将参数发送到函数
但有时我需要发送 2 个数组,有时 - 3 个或更多:
c++ - 可变参数扩展可以用作逗号运算符调用链吗?
我在看“如何正确使用可变参数模板的引用”,想知道逗号扩展能走多远。
这是答案的变体:
由于可变参数被扩展为其元素的逗号分隔列表,这些逗号在语义上是否等同于模板/函数参数分隔符,或者它们是否按词法插入,使其适合任何(后预处理器)使用,包括逗号运算符?
这适用于我的 GCC-4.6:
但是当我尝试时:
我不断收到解析错误,期待“;” 在“...”之前,并且“args”不会扩展其包。为什么它不起作用?是因为如果“args”为空,我们会得到一个无效的标点符号?合法吗,我的编译器不够好?
(我已经尝试在括号中包含“args”,和/或使用后增量;都没有成功。)
c++ - 可变参数函数 va_arg() 返回不正确的参数
问题部分解决:请阅读底部
有问题的可变参数函数,最简单的是:
如您所见,有问题的函数是我的 Variant 类的重载构造函数。这个特定的构造函数在声明数组时会考虑维度的大小和数量。
所以这条线在我的 main() 中运行:
当我断点之后
在函数行中,我得到以下结果:
然后程序段错误,因为显然这些是完全无效的值。
有任何想法吗?提前致谢。
问题部分解决:重新启动以某种方式解决了该问题,但现在是一个新问题......
之后调用的我的 OTHER 可变参数函数似乎拾取了传递给 Variant() 构造函数的任何参数,而不是它自己的参数。有任何想法吗?
和...
提前致谢。