對於以下代碼靜態constexpr成員函數沒有發現
#include <array>
template<unsigned MaxP, typename type>
struct kernel
{
static constexpr unsigned max_pole(unsigned P)
{ return P>MaxP? MaxP:P; }
template<unsigned P>
using array = std::array<type,max_pole(P)>; // wrong?
template<unsigned P>
static void do_something(array<P> const&, array<P>&);
};
GCC 4.7.0(克++ -c -std = C++ 11)給出
error: ‘max_pole’ was not declared in this scope
這是正確(編譯器的行爲)?請注意,如果我通過將kernel::max_pole
替換爲kernel::max_pole
來解決max_pole
,那麼它編譯的很好。
編輯向bugzilla報告,接受爲bug C++/55992,請參閱http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55992。 gcc 4.7.x和4.8.0也會出現這種情況。
只是測試:同爲'G ++ 4.7.2'有人有像4.8新版本?也許這是一個已修復的錯誤... – leemes