<div dir="ltr">As a template class, it is impossible to find the `std::vector` class in libc++. When writing a template class, all the code need during compile-time should be provided in the header file; and when compiling with a template class/function, the template parameter will be replaced with the concrete type/argument. As you can see, this is just a compile-time process rather than a link-time process, much less the libc++.<br><div class="gmail_extra"><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">explicit vector( size_type count, const T& value = T(), const Allocator& alloc = Allocator()); (until C++11) <b>(1)</b><br>explicit vector( size_type count );(since C++11) (until C++14) <b>(2)</b><br clear="all"><div><div><br></div><div>If I use vector<T> a(1), which one will be chosen with different c++ std command option, such as -std=c++03, -std=c++11? Actually, I can not find the (1) version in libc++ source.</div></div></div></blockquote><div>Just as what I mentioned above, the answer is it depends. If you compile your code under standard C++11, (2) will be used; if you use previous standard, (1) will be used. (Also, it depends on the argument you provided, but the header file will deal with it.)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>In my option, both two functions should be implemented and guarded by related language level macro, but I can not find in libc++ source. So libc++ is not compatible with previous c++ language standard implementation?</div></div></blockquote><div>So, it is not weird to find nothing about that.</div></div></div></div>