아래 코드가 GCC g ++ 4.7로 컴파일되지 않는 이유는 명확하지 않습니다.
$ g++ -std=c++11 -fPIC test.cpp
test.cpp:11:45: error: ‘B operator"" _b(const char*, size_t)’ has invalid argument list
클래스 C가 템플릿이 아닌 것으로 선언되면 제대로 컴파일됩니다.
#include <cstddef>
struct B{};
B operator+(B, B) { return B(); }
B operator"" _b(const char *, size_t) { return B(); }
template<typename T>
class C
{
friend B operator+(B, B);
friend B operator"" _b(const char *, size_t);
};
int main() { return 0; }
이 코드에 어떤 문제가 있습니까? 아니면 컴파일러 버그입니까?
아니면 컴파일러 버그입니까?
연산자 함수의 서명이 표준에 의해 명시 적으로 허용되므로이 코드는 정확합니다. §13.5.8 / 3 참조. 그래서 그것은 GCC- 버그입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다