2016-07-18 52 views
1

我想知道是否可以使用模板參數設置std::array<std::pair<int,int>>類成員。我不想使用該類的構造函數。std :: array作爲類的參數

因此,這將是這樣的:

template<int N, std::array<std::pair<int,int>,N> arr> 
class test 
{ 
public: 
private: 
    std::array<std::pair<int,int>,N> m_arr=arr; 
}; 

int main() 
{ 
    constexpr std::array<std::pair<int,int>,N> arr 
    {{ 
    {1,2}, 
    {3,4}, 
    {5,6} 
    }}; 
    test<3,arr> t; 
    return 0; 
} 

在此先感謝。

+6

你爲什麼要這麼做? – Holt

回答

1

如果你在main()之外定義了arr並且你把它作爲const引用傳遞,我想這是可能的。

下面的代碼與我鐺編譯(3.5)

#include <array> 

constexpr int N {3}; 

template<int N, const std::array<std::pair<int,int>,N> & arr> 
class test 
{ 
    public: 
    private: 
     std::array<std::pair<int,int>,N> m_arr = arr; 
}; 

constexpr std::array<std::pair<int,int>,N> arr 
{{ {1,2}, {3,4}, {5,6} }}; 

int main() 
{ 
    test<3,arr> t; 
    return 0; 
}