模板类中未拒绝引用初始值设定项

时间:2017-01-24 17:55:41

标签: c++ templates initializer-list

在以下模板类定义中,为什么不拒绝初始化程序?

#include <cstdlib>

template <size_t S>
struct Have_ref {
    Have_ref(int& x, int(&arr)[S]) : x{x}, arr{arr} {};
    int& x{}; // compiles in VS2015 and gcc. Rejected by Clang
    int(&arr)[S] {}; // compiles in VS2015, gcc and Clang
};

//struct Have_ref2 {
//  Have_ref2(int& x, int(&arr)[5]) : x{x}, arr{arr} {};
//  int& x{}; // error: invalid intitialization
//  int(&arr)[5] {}; // error: invalid initialization
//};

int main()
{
    int x{};
    int arr[5];
    Have_ref<5>{x,arr};
}

0 个答案:

没有答案
相关问题