由买买提看人间百态

topics

全部话题 - 话题: variadic
1 (共1页)
t****t
发帖数: 6806
1
来自主题: Programming版 - (zz)C++11新特性
新语言标准刚出现肯定会有移植性的问题, 不管你加什么都一样, 因为编译器实现新标
准必定有先有后. 如果从这个角度来看问题, 那就真的什么都不要加了, 永远不变最好
了. perl 5.8出来很长时间后我还能看到check 5.003的程序.
这个滞后性是永远没法避免的. jdk1.2 - 1.5中间搞了多少麻烦? 我不用java, 但是我
也听说过. 语言总要发展的, 如果没有标准化的话, 那就没人控制朝哪个方向发展. 标
准化正是为了避免以后更多的麻烦.
variadic template和C99没关系, 你记错了. 你想说的是variadic macro吧, 那个在c+
+11里确实有了. tuple还是一个很有用的类, 有了variadic template才方便支持的.
thread在unix和windows上还是有很大不同吧. 我windows不熟, 但是我记得win32的调
用应该和pthread并不兼容. 当然肯定有pthread wrapper, boost应该就算一种. 这和
std::thread或boost::thread也没什么区别, 其实c++11的thre... 阅读全帖
t****t
发帖数: 6806
2
来自主题: Programming版 - (zz)C++11新特性
新语言标准刚出现肯定会有移植性的问题, 不管你加什么都一样, 因为编译器实现新标
准必定有先有后. 如果从这个角度来看问题, 那就真的什么都不要加了, 永远不变最好
了. perl 5.8出来很长时间后我还能看到check 5.003的程序.
这个滞后性是永远没法避免的. jdk1.2 - 1.5中间搞了多少麻烦? 我不用java, 但是我
也听说过. 语言总要发展的, 如果没有标准化的话, 那就没人控制朝哪个方向发展. 标
准化正是为了避免以后更多的麻烦.
variadic template和C99没关系, 你记错了. 你想说的是variadic macro吧, 那个在c+
+11里确实有了. tuple还是一个很有用的类, 有了variadic template才方便支持的.
thread在unix和windows上还是有很大不同吧. 我windows不熟, 但是我记得win32的调
用应该和pthread并不兼容. 当然肯定有pthread wrapper, boost应该就算一种. 这和
std::thread或boost::thread也没什么区别, 其实c++11的thre... 阅读全帖
t****t
发帖数: 6806
3
as xentar said, this tightly depends on specific ABI used. even on windows
32bit, cdecl, stdcall, fastcall, etc. are all different (of course, some of
them do not support variadic).
for example, on x86-64/linux, %al will be set to number of registers used in
variadic function call. although in all conventions, variadic calls must
let callee to find "..." parameters from the last fixed parameter.
r*****3
发帖数: 143
4
中文名: 新C++标准:C++0x 概述
原名: Overview of the New C++ : C++0x
作者: Scott Meyers
图书分类: 软件
资源格式: PDF
版本: 英文文字版
出版社: Artima
书号: 978-0-596-80197-6
发行时间: 2011年
地区: 美国
语言: 英文
简介:
内容介绍:
Specification of the next version of C++ (“C++0x”) is nearing completion,
and many compilers (e.g., Visual C++ and Gnu C++) already offer several
features from the revised language. And such features! auto-declared
variables reduce typing drudgery and syntactic noise; Unicode and threading
support address important functional... 阅读全帖
t****t
发帖数: 6806
5
VS2013不是还有"个把"feature不支持吧, 也就支持个一半的样子. 当然现在variadic
template可以用了, 不错. 以前没有variadic template, 我觉得就跟没有C++11一样.
t****t
发帖数: 6806
6
来自主题: JobHunting版 - 问个构造函数的问题
呃, 看到第一个回贴我以为他懂的
看到第二个回贴我才知道他是装懂的
这个答案是这样的
class B
{
public:
B(args_1);
B(args_2);
// and many constructors with different arg lists
};
class D : public B
{
public:
template D(T args_1) : B(args_1) {}
template D(T1 args_1, T2 args_2) : B(args_1, args
_2) {}
/* ...按参数个数写出D::D的template */
};
并不是把B变成模板.
当然, 如果允许C++11的话, 就直接在D里写using B::B; 就可以了.
不过, 这个特性目前gcc还没支持. 如果用支持的特性, 可以用variadic template (
supported in gcc 4.3+), 这样就只要写一个模板就可以了, 不用按个数:
template 阅读全帖
t****t
发帖数: 6806
7
来自主题: JobHunting版 - 问个构造函数的问题
if the two constructors of B can be distinguished, then D's two
instantiations can be distinguished.
suppose you have
B::B(const char*, int);
B::B(int, const char*);
B::B(double, float);
and template:
template
D::D(T1 t1, T2 t2) : B(t1, t2) {}
you can write
B b1("abc", 1), b2(2, "def"), b3(1.234, 5.678f);
D d1("ABC", 3), d2(4, "DEF"), d3(10.987, 6.543f);
clear enough?
as for your other question, if you have a 100 parameter constructor, you do
have to write 100 paramete... 阅读全帖
s****n
发帖数: 147
8
上周五面的groupon chicago office,今天催来了个拒信……联系我的是groupon
seattle office的……
电面:
电面一个小时,只考了一道题,聊了大半个小时的天……
# Writing a Key Value Store
实现
set,
get,
delete - 这个keys是很多string,但是不知道有多少个,这里考了 variadic
function 这个点……
keys - Returns all keys matching pattern. 只用调用正则的函数就好,
不用实现……
一周后收到onsite……本人就在芝加哥,所以去的时候很方便……
onsite总共面了3个
1. manager面。 2个组的manager(同一个人)……聊了些之前的project,以及怎么优化
……
2. senior SDE. 在groupon 4年……面了一道题……实现,
vector findCombination(int target, vector &nums);
s... 阅读全帖
i********r
发帖数: 131
9
来自主题: Programming版 - C++怎么写任意重重循环?
thinking in c++11 and a more general solution:
#include
#include
using namespace std;
void do_something(const vector& vars)
{
cout << "do_something with loop variables: ";
for (auto& i: vars)
cout << i << " ";
cout << endl;
}
void myLoop(vector& vars)
{
do_something(vars);
}
template
void myLoop(vector& vars, unsigned int n, Args... args)
{
auto index = vars.size();
vars.push_back(0);
... 阅读全帖
i********r
发帖数: 131
10
来自主题: Programming版 - C++怎么写任意重重循环?
If the number of loops are only known at run time, the variadic template won
't work. The only way I can think of is recursion:
#include
#include
using namespace std;
void do_something(const vector& vars)
{
cout << "do_something with loop variables: ";
for (auto& i: vars)
cout << i << " ";
cout << endl;
}
// method 2:
void myLoop(const vector& inputs, vector& vars)
{
if (inputs.size() == vars.size()) {
... 阅读全帖
t****t
发帖数: 6806
11
来自主题: Programming版 - C++现在前进的方向是不是错误的?
most are experimental and partial. but some important things are already
there -- variadic templates, xvalue, some of the libraries. gcc still does
not have lambda though.
t****t
发帖数: 6806
12
来自主题: Programming版 - Compile issues
isn't partial specialization from c++98?
or you meant variadic templates?
t****t
发帖数: 6806
13
来自主题: Programming版 - C++0x
concept我觉得没有也过得去, reflection还是很有用的.
关键是, 看上去0x的方向是更高层次的抽象(比如说对variadic template的支持). 但
是reflection没有的话, 这个抽象就少了一块.
e****d
发帖数: 895
14
来自主题: Programming版 - C++0x
C++0x doesn't bring too much to template except variadic
template and template alias.
Preprocessing is about token scanning and processing, which
is before the compilation stage. It might not be practical
to put in any PP api in it.
t****t
发帖数: 6806
15
来自主题: Programming版 - 从今天开始起,学C++!
4.4就可以了, 不过我确实用的4.6
variadic template绝对不能没有, 别的相对来说是小事情. 没有这个怎么capture
function signature? vc11还是没有这个. how difficult is it? gcc 4.3开始就支持
了.
t****t
发帖数: 6806
16
看你具体问题了, 一般是写库用的. 比如说从variant type的调用转换到任意非函数的
调用的接口:
user want to write
variant LHS[...], RHS[...]
RHS = invoke("function", LHS)
given any function (certain limitation applies, e.g. all parameters can be
converted to/from variant)
这个时候你就需要用variadic template来capture函数的signature
t****t
发帖数: 6806
17
来自主题: Programming版 - (zz)C++11新特性
这些新东西其实很好用的...很多"新"东西早几年前就在编译器扩展里出现了, 现在不
过是合法化. 比如variadic template, 非常好用, 既不容易出错, 又提高编译速度,
还有auto以及range based for, 比如说原来遍历容器需要写:
for (vector::iterator i=c.begin(); i!=c.end(); ++i) {
/* do something to *i */
}
现在可以写:
for (auto i: c) {
/* do something to i */
}
n******t
发帖数: 4406
18
来自主题: Programming版 - (zz)C++11新特性
这个算syntax sugar把,我觉得属于可有可无的东西,variadic template C很多C编译
器里面也有类似的的扩展。不过我觉得一个东西有用,不一定要放到 standard里面,反
而对语言推广不利。
还有我觉得没必要把thread弄成语言的组成部分,用平台上的库就好了。
t****t
发帖数: 6806
19
来自主题: Programming版 - (zz)C++11新特性
你要说可有可无当然也不能说错, 因为就算所有C++的特性都没有, 只有C的部分, 你也
可以写出所有的程序对吧
但是语言发展的目的不就是为了简化程序员的工作么. variadic template出现以前,
tr1的tr1::tuple, tr1::function之类实现很复杂, 要把一个参数到二十多个参数的
case都enumerate一遍, 也不安全. gcc4.3以后支持这个了, 就简单得多, 编译速度也
快, 对性能也没影响.
好用的东西当然应该放到标准里才利于语言的推广, 要不然我写个东西还要担心换个平
台不能用. 跨平台上的thread库早就有了, boost就是, 但是大家还是要放到标准里面,
正是为了语言的推广.

,反
n******t
发帖数: 4406
20
来自主题: Programming版 - (zz)C++11新特性
我觉得这种invention是没边的。。什么功能都想弄出来,最后就是杂和乱。当然我最近
很长一段时间可能做系统开发比较多,看法不一定全面。
variadic template貌似是从C99里面抄过来的? 而且其实C99里面加的新功能其实比起C
++来说保守太多了,而且都是放到标准里面有不少需求的特性,结果其实际上大部分稍
微考虑一点移植性的程序都不太用C99的新功能。
至于thread,跨平台的idea固然是没有问题的,但是就这个case来说,在C++里面弄出这
么一个内建的功能,比起调用pthread库来说,有什么好处?我的感觉除了麻烦,没有好
处。移植性?pthread在所有UNIX和Windows上都有实现,而等到C11在所有平台上都有良
好支持恐怕更慢。C++的thread有pthread不能完成的事情么,就我所知没有,反过来呢
?一定是有的。加入这么个东西,首先不支持C11的编译器就出问题了,如果还没有别的
好处,程序员为什么要用?
我个人的感觉编程打字不是瓶颈,也就是说,如果一个功能推出只是为了少打几个字,
意义不是很大。当然有些时候,简化了句法,同时也简化了思路。但是对于... 阅读全帖
t****t
发帖数: 6806
21
来自主题: Programming版 - (zz)C++11新特性
这些新东西其实很好用的...很多"新"东西早几年前就在编译器扩展里出现了, 现在不
过是合法化. 比如variadic template, 非常好用, 既不容易出错, 又提高编译速度,
还有auto以及range based for, 比如说原来遍历容器需要写:
for (vector::iterator i=c.begin(); i!=c.end(); ++i) {
/* do something to *i */
}
现在可以写:
for (auto i: c) {
/* do something to i */
}
n******t
发帖数: 4406
22
来自主题: Programming版 - (zz)C++11新特性
这个算syntax sugar把,我觉得属于可有可无的东西,variadic template C很多C编译
器里面也有类似的的扩展。不过我觉得一个东西有用,不一定要放到 standard里面,反
而对语言推广不利。
还有我觉得没必要把thread弄成语言的组成部分,用平台上的库就好了。
t****t
发帖数: 6806
23
来自主题: Programming版 - (zz)C++11新特性
你要说可有可无当然也不能说错, 因为就算所有C++的特性都没有, 只有C的部分, 你也
可以写出所有的程序对吧
但是语言发展的目的不就是为了简化程序员的工作么. variadic template出现以前,
tr1的tr1::tuple, tr1::function之类实现很复杂, 要把一个参数到二十多个参数的
case都enumerate一遍, 也不安全. gcc4.3以后支持这个了, 就简单得多, 编译速度也
快, 对性能也没影响.
好用的东西当然应该放到标准里才利于语言的推广, 要不然我写个东西还要担心换个平
台不能用. 跨平台上的thread库早就有了, boost就是, 但是大家还是要放到标准里面,
正是为了语言的推广.

,反
n******t
发帖数: 4406
24
来自主题: Programming版 - (zz)C++11新特性
我觉得这种invention是没边的。。什么功能都想弄出来,最后就是杂和乱。当然我最近
很长一段时间可能做系统开发比较多,看法不一定全面。
variadic template貌似是从C99里面抄过来的? 而且其实C99里面加的新功能其实比起C
++来说保守太多了,而且都是放到标准里面有不少需求的特性,结果其实际上大部分稍
微考虑一点移植性的程序都不太用C99的新功能。
至于thread,跨平台的idea固然是没有问题的,但是就这个case来说,在C++里面弄出这
么一个内建的功能,比起调用pthread库来说,有什么好处?我的感觉除了麻烦,没有好
处。移植性?pthread在所有UNIX和Windows上都有实现,而等到C11在所有平台上都有良
好支持恐怕更慢。C++的thread有pthread不能完成的事情么,就我所知没有,反过来呢
?一定是有的。加入这么个东西,首先不支持C11的编译器就出问题了,如果还没有别的
好处,程序员为什么要用?
我个人的感觉编程打字不是瓶颈,也就是说,如果一个功能推出只是为了少打几个字,
意义不是很大。当然有些时候,简化了句法,同时也简化了思路。但是对于... 阅读全帖
t****t
发帖数: 6806
25
来自主题: Programming版 - 第五版的 c++ primer 出来了
其实c++11加的内容不多了, type deduction, lambda expression和其它的一些小细节
, 都不影响设计, 只好算是语法糖. variadic template很好很强大, 但是主要体现在
generic programming的结构上. 新的memory model比较重要, 但是现在实现了的不多,
而且也不至于新买本书来看. moving semantics会影响设计, 但是只体现在类实现上
的效率. 重要的concept完全没有了, 失望ing.
所以完全没必要买本书, 把c++11的标准翻翻就行了.
t****t
发帖数: 6806
26
来自主题: Programming版 - 第五版的 c++ primer 出来了
我觉得你似乎没有真正用11写过什么东西. variadic template对capture function
signature太重要了, 没有的话几乎是不能写的.
t****t
发帖数: 6806
27
来自主题: Programming版 - recurvion真的很难懂~~
variadic template必须recursive, enough said.

interpolation
t****t
发帖数: 6806
28
来自主题: Programming版 - recurvion真的很难懂~~
this is not variadic template...
t****t
发帖数: 6806
29
我用好几年了, 从gcc 4.4开始用的. 其实4.3开始有variadic template就很好用了.
4.4的atomic也不错, 虽然实现上还有点小缺口. 4.7开始的atomic据说很有型了.
t****t
发帖数: 6806
30
一个variadic模板就够了.

断?
t****t
发帖数: 6806
31
好吧, 我是没明白你说的C-style C++是什么意思. C++和C是两个不同的语言, 在我看
来, 正常C++98的程序不应该叫C-style.
C++11的新功能很多是给library/framework用的, 比如说最重要的variadic template.
我自己写library, 所以用得很爽.

C
m*******l
发帖数: 12782
32
没有具体看,据herb sutter这个人吹NB,说就个别不重要的feature不支持...

variadic
z****e
发帖数: 54598
33
来自主题: Programming版 - go几天的一些感受
作为论据,我找到了中文的翻译,但是那个youtub链接失效了
Go语言之父谈Go:大道至简
时间:2012-07-05 15:40 作者:王然
导读:这篇文章是Google首席工程师、Go语言之父Rob Pike自己整理的6月21日在旧金
山给Go SF的演讲稿。Rob提到:Go语言本是以C为原型,以C++为目标设计,但最终却大
相径庭。值得一提的是,这3门语言都曾当选TIOBE年度语言。
几个礼拜之前我被问到:“对于Go语言,最令你惊讶的是什么?”当时我就明确地给出
了答案:“虽然我希望C++程序员能够使用Go作为替代拼,但实际上大部分Go程序员都
是从Python和Ruby转过来的,其中却少有C++程序员。”
我、Ken以及Robert都曾是C++程序员,在我们编写软件时觉得应该设计一门更适合解决
这个问题的编程语言。奇怪的是,其他程序员似乎却不关心。
今天我将说说是什么让我们决定创造Go语言的,及其出乎意料的结果。这里我谈的更多
的会是Go而不是C++,所以即使你不懂C++也没关系。
主旨可以简单地总结为:你更同意Less is more还是Less is less?
这里有一个... 阅读全帖
m******t
发帖数: 1171
34
来自主题: Programming版 - 谁能推荐个好的编程语言?
java确实在考虑之列,不过java的优点似乎没有多到让我从c++转过来。
不过我不太懂java,能否介绍下java的优势
我的拙见:
java能干的,我用c++也能干,也没有太麻烦。
而且c++11以后的新性能让c++简洁性又有提升,有了move,有了lambda,还有了
variadic template。
lambda + STL container + 各种iterator + auto
c++已经是半个functional了。
1 (共1页)