c++ - 如何在 C++11 中创建我自己的 initializer_list 类?

标签 c++ c++11 initializer-list

我使用支持 Uniform Initialization 的 VS2013 创建了一个具有与 std::initializer_list 相同实现的类。

template <class _Elem>
class My_Initializer_List { ... } // Hope to replace std::initializer_list!

我注意到的第一件事是,编译器一直在寻找 std::initializer_list,但它确实有替代它的东西,即 My_Initiliazer_List

void Foo()
{
    // The compiler tries to invoke 
    // its constructor with std::initializer<int>{ 10, 20 }.
    auto MyVar = My_Initializer_List<int>{ 10, 20 }; // Compile Error!
}

如果此功能依赖于 C++ 标准库,那么我相信我应该能够用我自己的类替换它,至少出于学术目的。

提前致谢。

最佳答案

抱歉,没有。编译器对 std::initializer_list “内置”有特殊的了解。标准库的其他几个部分也是如此(例如,引用的 dynamic_cast 抛出 std::bad_cast,实际上您无能为力改变它)。

关于c++ - 如何在 C++11 中创建我自己的 initializer_list 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19969259/

相关文章:

python - SWIG Python C/C++。结果模块是空的,没有错误

c++ - 保证元素位置固定的容器

c++ - 查找字母子串

c++ - 为什么这段将字符串初始化为单个字符的代码会调用 initializer_list 构造函数?

c++ - 从具有尝试限制的 txt 文件登录

c++ - MFC 基于对话框的应用程序标题栏突出显示 Windows 10 上的视觉工件(即 CDialogEx 中的错误)

c - 为什么我的程序不打印名字的首字母? (CS50 缩写程序)

c++ - 在 C、C++ 中的初始化中排序

c++ - 如何在 MFC c++ visual studio 中跟踪或跟踪数组的元素

C++:重新定义不同类型的模板类