今日遭遇したバグ
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19809
このバグはVCの以下のバグについて調査しているときに遭遇
templateclass foo { template friend void prod(const foo &); }; template void prod(const foo &s) { } int main() { foo<4> x; prod(x); return 0; }
以下、回避策
templateclass foo { static const int value=N; // prod内でNを使うために必要 template friend void prod(const M&); }; template void prod(const N&s) { } int main() { foo<4> x; prod(x); return 0; }
friendの範囲が少し広くなるが、まあ、しょうがない。