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

Dea*_*Seo 3 c++ initializer-list c++11

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

template <class _Elem>
class My_Initializer_List { ... } // Hope to replace std::initializer_list!
Run Code Online (Sandbox Code Playgroud)

我注意到的第一件事是编译器一直在寻找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!
}
Run Code Online (Sandbox Code Playgroud)

如果此功能依赖于C++标准库,那么我相信我应该能够将其替换为我自己的类,至少在学术上是这样.

提前致谢.

Jer*_*fin 7

对不起,不行.编译器具有std::initializer_list"烘焙"的特殊知识.标准库的其他几个部分也是如此(例如,dynamic_cast一个参考文件抛出一个std::bad_cast,并且你无法做任何改变它的事情).

  • 在我看来,这是非常不幸的. (2认同)