以下代码在使用GCC g++ 4.7编译时无法通过,具体原因不清楚,提示如下:
如果类C被声明为非模板,则可以成功编译。
这段代码存在什么问题?或者是编译器的bug吗?
$ 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; }
这段代码存在什么问题?或者是编译器的bug吗?