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

时间:2013-11-14 03:55:15

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

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

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 ++标准库,那么我相信我应该能够将其替换为我自己的类,至少是出于学术目的。

提前致谢。

1 个答案:

答案 0 :(得分:7)

抱歉,但没有。编译器具有std::initializer_list“烘焙”的特殊知识。标准库的其他一些部分也是如此(例如,引用的dynamic_cast引发std::bad_cast,并且您无法做任何改变的事情。