小编use*_*017的帖子

通用引用和std :: initializer_list

在他的"C++和Beyond 2012:Universal References"演示中,Scott反复强调了这一点,即通用引用处理/绑定到所有内容,因此重载已经采用通用引用参数的函数是没有意义的.在我混淆之前,我没有理由怀疑这一点std::initializer_list.

这是一个简短的例子:

#include <iostream>
#include <initializer_list>
using namespace std;

template <typename T>
void foo(T&&) { cout << "universal reference" << endl; }

template <typename T>
void foo(initializer_list<T>) { cout << "initializer list" << endl; }

template <typename T>
void goo(T&&) { cout << "universal reference" << endl; }

template <typename T>
void goo(initializer_list<T> const&) { cout << "initializer list" << endl; }

int main(){
    auto il = {4,5,6};
    foo( {1,2,3} );
    foo( il ); …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

14
推荐指数
1
解决办法
1264
查看次数

标签 统计

c++ ×1

c++11 ×1