我使用支持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 ++标准库,那么我相信我应该能够将其替换为我自己的类,至少是出于学术目的。
提前致谢。
答案 0 :(得分:7)
抱歉,但没有。编译器具有std::initializer_list
“烘焙”的特殊知识。标准库的其他一些部分也是如此(例如,引用的dynamic_cast
引发std::bad_cast
,并且您无法做任何改变的事情。