次のコードの場合
#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(g ++ -c -std = c ++ 11)は
error: ‘max_pole’ was not declared in this scope
これは正しいですか(コンパイラの動作)?max_pole
示された行でそれを置き換えることによって解決するとkernel::max_pole
、正常にコンパイルされることに注意してください。
編集bugzillaに報告され、バグc ++ /55992として受け入れられました。http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55992を参照してください。gcc4.7.xおよび4.8.0でも発生します。