其他分享
首页 > 其他分享> > 如何在C 11中创建自己的initializer_list类?

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

作者:互联网

我使用支持统一初始化的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,c11,initializer-list
来源: https://codeday.me/bug/20190728/1564871.html