我使用支持 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/