首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >std::initializer_list的实现

std::initializer_list的实现
EN

Stack Overflow用户
提问于 2013-08-11 01:07:29
回答 2查看 5.5K关注 0票数 24

我一直在研究initializer_list是如何实现的,所以我找到了该标准的18.9节,并找到了一个看起来足够简单的接口。我认为制作我自己的版本(我将其命名为MyNamespace::InitializerList )和一个用例会很有启发性:

template<class T>
class ArrayPrinter
{
public:
    ArrayPrinter(MyNamespace::InitializerList<T> list)
    {
        for (auto i : list) cout << i << endl;
    }
};

...

ArrayPrinter ap{ {1,2,3} };

我惊讶地发现这不起作用,编译器抱怨说它找不到合适的构造函数(它想给我3个参数,但18.9节只描述了一个默认构造函数)。

经过一些修改之后,我发现我的类必须准确地命名为std::initializer_list才能工作。我也可以在MyNamespace中使用std::initializer_list别名,但不能将MyNamespace::InitializerList别名为std::initializer_list

看起来这并不是真正的language feature as it depends on the standard library

我的问题的要点是为什么名称如此重要,以及它试图传递给构造函数的3个参数是什么?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18164353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档