2
我試圖將this question的最佳答案放到我自己的項目中,並且無法讓gcc編譯它(在RHEL linux上使用「-std = GNU ++ 0X「)。我已經做了一些改動到原來的代碼,這樣我的結束如下:GCC 4.4.7無法從初始化列表轉換爲std :: array
#include <string>
#include <vector>
#include <fstream>
#include <cerrno>
#include <cstring>
#include <array>
#include <algorithm>
template <typename T0, typename T1, size_t N> bool operator *(const T0& lhs, const std::array<T1, N>& rhs)
{
return std::find(rhs.begin(), rhs.end(), lhs) != rhs.end();
}
template <class T0, class...T> std::array<T0, 1+sizeof...(T)> in(T0 arg0, T...args)
{
return {{arg0, args...}};
}
其中一些包括將不相關的,我只是展示所有這些給你看。我使用的功能是這樣的:
if (1 *in(1,2,3))
編譯時,GCC給出了「中」的「迴歸」線以下錯誤:
error: could not convert '{{arg0, args#0, args#1}}' to 'std::array<int, 3u>'
任何人都可以揭示這是爲什麼任何光請?
我之前沒有在C++ 11中做過多的工作,所以我在試圖找出問題時有點失落。 我已經在「args」位周圍嘗試了不同數量的{},但目前爲止無濟於事。
感謝您提供任何幫助。