발견하지정적 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 (g ++ -c -std =은 ++ 11 ℃)
error: ‘max_pole’ was not declared in this scope
이인가 준다 올바른 (컴파일러의 동작)? 표시된 줄에 kernel::max_pole
으로 바꾸어 max_pole
을 해결하면 잘 컴파일됩니다.
EDIT 버그 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