{"action":"created","issue":{"url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/6","repository_url":"https://api.github.com/repos/Ethatron/squish-ccr","labels_url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/6/labels{/name}","comments_url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/6/comments","events_url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/6/events","html_url":"https://github.com/Ethatron/squish-ccr/issues/6","id":231736334,"number":6,"title":"Compilation fails","user":{"login":"ghost","id":10137,"avatar_url":"https://avatars3.githubusercontent.com/u/10137?v=4","gravatar_id":"","url":"https://api.github.com/users/ghost","html_url":"https://github.com/ghost","followers_url":"https://api.github.com/users/ghost/followers","following_url":"https://api.github.com/users/ghost/following{/other_user}","gists_url":"https://api.github.com/users/ghost/gists{/gist_id}","starred_url":"https://api.github.com/users/ghost/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghost/subscriptions","organizations_url":"https://api.github.com/users/ghost/orgs","repos_url":"https://api.github.com/users/ghost/repos","events_url":"https://api.github.com/users/ghost/events{/privacy}","received_events_url":"https://api.github.com/users/ghost/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2017-05-26T21:14:09Z","updated_at":"2017-12-20T04:32:49Z","closed_at":null,"author_association":"NONE","body":"With g++ 6.3.1:\r\n\r\n```\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h: In function ‘squish::Col4 squish::ShiftLeftLo(squish::Col4::Arg)’:\r\nsimd_float.h:689:10: error: declaration of ‘squish::Col4 r’ shadows template parameter\r\n     Col4 r;\r\n          ^\r\nsimd_float.h:686:12: note: template parameter ‘r’ declared here\r\n   template<const int r, const int g, const int b, const int a>\r\n            ^~~~~\r\nsimd_float.h: In function ‘squish::Col4 squish::CopyBits(squish::Col4::Arg, squish::Col4::Arg)’:\r\nsimd_float.h:740:14: error: ‘MaskBits’ was not declared in this scope\r\n       return MaskBits<n, 0>(right);\r\n              ^~~~~~~~\r\nsimd_float.h:740:27: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       return MaskBits<n, 0>(right);\r\n                          ~^~~~~~~~\r\nsimd_float.h:742:23: error: ‘ShiftLeftHalf’ was not declared in this scope\r\n       return (left) + ShiftLeftHalf<p>(right);\r\n                       ^~~~~~~~~~~~~\r\nsimd_float.h:744:12: error: ‘MaskBits’ was not declared in this scope\r\n     return MaskBits<p, 0>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n            ^~~~~~~~\r\nsimd_float.h:744:50: error: ‘ShiftLeftHalf’ was not declared in this scope\r\n     return MaskBits<p, 0>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                                  ^~~~~~~~~~~~~\r\nsimd_float.h: In function ‘squish::Col4 squish::InjtBits(squish::Col4::Arg, squish::Col4::Arg)’:\r\nsimd_float.h:797:14: error: ‘MaskBits’ was not declared in this scope\r\n       return MaskBits<n, 0>(right);\r\n              ^~~~~~~~\r\nsimd_float.h:797:27: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       return MaskBits<n, 0>(right);\r\n                          ~^~~~~~~~\r\nsimd_float.h:799:23: error: ‘ShiftLeftHalf’ was not declared in this scope\r\n       return (left) + ShiftLeftHalf<p>(right);\r\n                       ^~~~~~~~~~~~~\r\nsimd_float.h:801:12: error: ‘KillBits’ was not declared in this scope\r\n     return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n            ^~~~~~~~\r\nsimd_float.h:801:35: error: ‘MaskBits’ was not declared in this scope\r\n     return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                   ^~~~~~~~\r\nsimd_float.h:801:50: error: ‘ShiftLeftHalf’ was not declared in this scope\r\n     return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                                  ^~~~~~~~~~~~~\r\nsimd_float.h: In function ‘squish::Col4 squish::ExtrBits(squish::Col4::Arg)’:\r\nsimd_float.h:815:14: error: ‘MaskBits’ was not declared in this scope\r\n       return MaskBits<n, 0>(a);\r\n              ^~~~~~~~\r\nsimd_float.h:815:27: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       return MaskBits<n, 0>(a);\r\n                          ~^~~~\r\nsimd_float.h:817:14: error: ‘ShiftRightHalf’ was not declared in this scope\r\n       return ShiftRightHalf<p>(a);\r\n              ^~~~~~~~~~~~~~\r\nsimd_float.h:819:12: error: ‘MaskBits’ was not declared in this scope\r\n     return MaskBits<n, 0>(ShiftRightHalf<p>(a));\r\n            ^~~~~~~~\r\nsimd_float.h:819:27: error: ‘ShiftRightHalf’ was not declared in this scope\r\n     return MaskBits<n, 0>(ShiftRightHalf<p>(a));\r\n                           ^~~~~~~~~~~~~~\r\nsimd_float.h: In function ‘void squish::ExtrBits(squish::Col4::Arg, squish::Col4&)’:\r\nsimd_float.h:830:14: error: ‘ExtrBits’ was not declared in this scope\r\n     right  = ExtrBits<n, p>( left );\r\n              ^~~~~~~~\r\nsimd_float.h:830:27: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n     right  = ExtrBits<n, p>( left );\r\n                          ~^~~~~~~~~\r\nsimd_float.h: In function ‘void squish::ConcBits(squish::Col4::Arg, squish::Col4&)’:\r\nsimd_float.h:836:14: error: ‘ShiftLeft’ was not declared in this scope\r\n     right  = ShiftLeft<32>( right );\r\n              ^~~~~~~~~\r\nsimd_float.h:838:16: error: ‘ExtrBits’ was not declared in this scope\r\n       right += ExtrBits<n, p>( left );\r\n                ^~~~~~~~\r\nsimd_float.h:838:29: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       right += ExtrBits<n, p>( left );\r\n                            ~^~~~~~~~~\r\nsimd_float.h: In function ‘void squish::ReplBits(squish::Col4::Arg, squish::Col4&)’:\r\nsimd_float.h:847:15: error: ‘ExtrBits’ was not declared in this scope\r\n       right = ExtrBits<-n, p>( left );\r\n               ^~~~~~~~\r\nsimd_float.h:847:29: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       right = ExtrBits<-n, p>( left );\r\n                            ~^~~~~~~~~\r\nsimd_float.h:851:15: error: ‘ExtrBits’ was not declared in this scope\r\n       right = ExtrBits< n, p>( left );\r\n               ^~~~~~~~\r\nsimd_float.h:851:29: error: no match for ‘operator>’ (operand types are ‘int’ and ‘const squish::Col4’)\r\n       right = ExtrBits< n, p>( left );\r\n                            ~^~~~~~~~~\r\nsimd_float.h: In member function ‘const u16& squish::Col8::operator[](int) const’:\r\nsimd_float.h:1177:17: warning: returning reference to temporary [-Wreturn-local-addr]\r\n     return s[pos];\r\n                 ^\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Vec3 squish::cQuantizer3<rb, gb, bb>::SnapToLattice(const squish::Vec3&) const’:\r\nmaths.h:415:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col3 p = FloatToInt<false>((grid * val.Clamp()) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h:417:37: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’\r\n     unsigned int lu; PackBytes(p, lu);\r\n                                     ^\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:229:15: note: in passing argument 2 of ‘void squish::PackBytes(squish::Col3::Arg, int&)’\r\n   friend void PackBytes(Col3::Arg v, int &loc )\r\n               ^~~~~~~~~\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Vec3 squish::cQuantizer3<rb, gb, bb>::SnapToLatticeClamped(const squish::Vec3&) const’:\r\nmaths.h:435:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col3 p = FloatToInt<false>((grid * val) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h:437:37: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’\r\n     unsigned int lu; PackBytes(p, lu);\r\n                                     ^\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:229:15: note: in passing argument 2 of ‘void squish::PackBytes(squish::Col3::Arg, int&)’\r\n   friend void PackBytes(Col3::Arg v, int &loc )\r\n               ^~~~~~~~~\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Col3 squish::cQuantizer3<rb, gb, bb>::QuantizeToInt(const squish::Vec3&) const’:\r\nmaths.h:460:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h:460:50: error: no match for ‘operator*’ (operand types are ‘squish::Vec3’ and ‘const squish::Col3’)\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n                              ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1438:15: note: candidate: squish::Vec3 squish::operator*(float, squish::Vec3::Arg)\r\n   friend Vec3 operator*( float left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1438:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘float’\r\nsimd_float.h:1432:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, float)\r\n   friend Vec3 operator*(Arg left, float right )\r\n               ^~~~~~~~\r\nsimd_float.h:1432:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘float’\r\nsimd_float.h:1426:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, squish::Vec3::Arg)\r\n   friend Vec3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1426:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘squish::Vec3::Arg {aka const squish::Vec3&}’\r\nsimd_float.h:183:15: note: candidate: squish::Col3 squish::operator*(int, squish::Col3::Arg)\r\n   friend Col3 operator*( int left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:183:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘int’\r\nsimd_float.h:177:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, int)\r\n   friend Col3 operator*(Arg left, int right )\r\n               ^~~~~~~~\r\nsimd_float.h:177:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nsimd_float.h:171:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, squish::Col3::Arg)\r\n   friend Col3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:171:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Col3 squish::cQuantizer3<rb, gb, bb>::QuantizeToIntClamped(const squish::Vec3&) const’:\r\nmaths.h:468:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h:468:50: error: no match for ‘operator*’ (operand types are ‘squish::Vec3’ and ‘const squish::Col3’)\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n                              ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1438:15: note: candidate: squish::Vec3 squish::operator*(float, squish::Vec3::Arg)\r\n   friend Vec3 operator*( float left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1438:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘float’\r\nsimd_float.h:1432:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, float)\r\n   friend Vec3 operator*(Arg left, float right )\r\n               ^~~~~~~~\r\nsimd_float.h:1432:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘float’\r\nsimd_float.h:1426:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, squish::Vec3::Arg)\r\n   friend Vec3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1426:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘squish::Vec3::Arg {aka const squish::Vec3&}’\r\nsimd_float.h:183:15: note: candidate: squish::Col3 squish::operator*(int, squish::Col3::Arg)\r\n   friend Col3 operator*( int left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:183:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘int’\r\nsimd_float.h:177:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, int)\r\n   friend Col3 operator*(Arg left, int right )\r\n               ^~~~~~~~\r\nsimd_float.h:177:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nsimd_float.h:171:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, squish::Col3::Arg)\r\n   friend Col3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:171:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Col3 squish::cQuantizer3<rb, gb, bb>::LatticeToInt(const squish::Vec3&) const’:\r\nmaths.h:477:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h:477:50: error: no match for ‘operator*’ (operand types are ‘squish::Vec3’ and ‘const squish::Col3’)\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n                              ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1438:15: note: candidate: squish::Vec3 squish::operator*(float, squish::Vec3::Arg)\r\n   friend Vec3 operator*( float left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1438:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘float’\r\nsimd_float.h:1432:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, float)\r\n   friend Vec3 operator*(Arg left, float right )\r\n               ^~~~~~~~\r\nsimd_float.h:1432:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘float’\r\nsimd_float.h:1426:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, squish::Vec3::Arg)\r\n   friend Vec3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1426:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘squish::Vec3::Arg {aka const squish::Vec3&}’\r\nsimd_float.h:183:15: note: candidate: squish::Col3 squish::operator*(int, squish::Col3::Arg)\r\n   friend Col3 operator*( int left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:183:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘int’\r\nsimd_float.h:177:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, int)\r\n   friend Col3 operator*(Arg left, int right )\r\n               ^~~~~~~~\r\nsimd_float.h:177:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nsimd_float.h:171:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, squish::Col3::Arg)\r\n   friend Col3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:171:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Col3 squish::cQuantizer3<rb, gb, bb>::LatticeToIntClamped(const squish::Vec3&) const’:\r\nmaths.h:485:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h:485:50: error: no match for ‘operator*’ (operand types are ‘squish::Vec3’ and ‘const squish::Col3’)\r\n     return (FloatToInt<false>(Qf * Vec3(255.0f)) * gridinv) >> 8;\r\n                              ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1438:15: note: candidate: squish::Vec3 squish::operator*(float, squish::Vec3::Arg)\r\n   friend Vec3 operator*( float left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1438:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘float’\r\nsimd_float.h:1432:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, float)\r\n   friend Vec3 operator*(Arg left, float right )\r\n               ^~~~~~~~\r\nsimd_float.h:1432:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘float’\r\nsimd_float.h:1426:15: note: candidate: squish::Vec3 squish::operator*(squish::Vec3::Arg, squish::Vec3::Arg)\r\n   friend Vec3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:1426:15: note:   no known conversion for argument 2 from ‘const squish::Col3’ to ‘squish::Vec3::Arg {aka const squish::Vec3&}’\r\nsimd_float.h:183:15: note: candidate: squish::Col3 squish::operator*(int, squish::Col3::Arg)\r\n   friend Col3 operator*( int left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:183:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘int’\r\nsimd_float.h:177:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, int)\r\n   friend Col3 operator*(Arg left, int right )\r\n               ^~~~~~~~\r\nsimd_float.h:177:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nsimd_float.h:171:15: note: candidate: squish::Col3 squish::operator*(squish::Col3::Arg, squish::Col3::Arg)\r\n   friend Col3 operator*(Arg left, Arg right)\r\n               ^~~~~~~~\r\nsimd_float.h:171:15: note:   no known conversion for argument 1 from ‘squish::Vec3’ to ‘squish::Col3::Arg {aka const squish::Col3&}’\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Vec4 squish::cQuantizer4<rb, gb, bb, ab>::SnapToLattice(const squish::Vec4&) const’:\r\nmaths.h:552:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val.Clamp()) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h:554:37: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’\r\n     unsigned int lu; PackBytes(p, lu);\r\n                                     ^\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1009:15: note: in passing argument 2 of ‘void squish::PackBytes(squish::Col4::Arg, int&)’\r\n   friend void PackBytes(Col4::Arg v, int &loc )\r\n               ^~~~~~~~~\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Vec4 squish::cQuantizer4<rb, gb, bb, ab>::SnapToLatticeClamped(const squish::Vec4&) const’:\r\nmaths.h:572:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h:574:37: error: invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’\r\n     unsigned int lu; PackBytes(p, lu);\r\n                                     ^\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1009:15: note: in passing argument 2 of ‘void squish::PackBytes(squish::Col4::Arg, int&)’\r\n   friend void PackBytes(Col4::Arg v, int &loc )\r\n               ^~~~~~~~~\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h: In member function ‘squish::Col4 squish::cQuantizer4<rb, gb, bb, ab>::QuantizeToInt(const squish::Vec4&) const’:\r\nmaths.h:597:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec4(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::cQuantizer4<rb, gb, bb, ab>::QuantizeToIntClamped(const squish::Vec4&) const’:\r\nmaths.h:605:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec4(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::cQuantizer4<rb, gb, bb, ab>::LatticeToInt(const squish::Vec4&) const’:\r\nmaths.h:614:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec4(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::cQuantizer4<rb, gb, bb, ab>::LatticeToIntClamped(const squish::Vec4&) const’:\r\nmaths.h:622:13: error: ‘FloatToInt’ was not declared in this scope\r\n     return (FloatToInt<false>(Qf * Vec4(255.0f)) * gridinv) >> 8;\r\n             ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Vec4 squish::vQuantizer::SnapToLattice(const squish::Vec4&) const’:\r\nmaths.h:781:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val.Clamp()) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Vec4 squish::vQuantizer::SnapToLatticeClamped(const squish::Vec4&) const’:\r\nmaths.h:793:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::vQuantizer::QuantizeToInt(const squish::Vec4&) const’:\r\nmaths.h:810:12: error: ‘FloatToInt’ was not declared in this scope\r\n     return FloatToInt<false>(Qf * gridint);\r\n            ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::vQuantizer::QuantizeToIntClamped(const squish::Vec4&) const’:\r\nmaths.h:818:12: error: ‘FloatToInt’ was not declared in this scope\r\n     return FloatToInt<false>(Qf * gridint);\r\n            ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Vec4 squish::vQuantizer::SnapToLattice(const squish::Vec4&, int, int) const’:\r\nmaths.h:832:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val.Clamp()) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Vec4 squish::vQuantizer::SnapToLatticeClamped(const squish::Vec4&, int, int) const’:\r\nmaths.h:844:14: error: ‘FloatToInt’ was not declared in this scope\r\n     Col4 p = FloatToInt<false>((grid * val) + gridgap);\r\n              ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::vQuantizer::QuantizeToInt(const squish::Vec4&, int, int) const’:\r\nmaths.h:861:12: error: ‘FloatToInt’ was not declared in this scope\r\n     return FloatToInt<false>(Qf * gridint);\r\n            ^~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col4 squish::vQuantizer::QuantizeToIntClamped(const squish::Vec4&, int, int) const’:\r\nmaths.h:869:12: error: ‘FloatToInt’ was not declared in this scope\r\n     return FloatToInt<false>(Qf * gridint);\r\n            ^~~~~~~~~~\r\nmaths.h: In constructor ‘squish::fQuantizer::fQuantizer(int, int)’:\r\nmaths.h:927:11: error: ‘class squish::Col3’ has no member named ‘SetRGBpow2’\r\n   gridprc.SetRGBpow2<0>(tb);\r\n           ^~~~~~~~~~\r\nmaths.h:931:15: error: no match for ‘operator~’ (operand type is ‘squish::Col3’)\r\n     gridprc = ~gridprc;\r\n               ^~~~~~~~\r\nmaths.h:935:15: error: ‘class squish::Col3’ has no member named ‘SetRGBpow2’\r\n       griddlt.SetRGBpow2<0>((db >> 0) & 0xFF, (db >> 8) & 0xFF, (db >> 16) & 0xFF/*, (db >> 24) & 0xFF*/);\r\n               ^~~~~~~~~~\r\nmaths.h:937:15: error: ‘class squish::Col3’ has no member named ‘SetRGBpow2’\r\n       griddlt.SetRGBpow2<16>(tb);\r\n               ^~~~~~~~~~\r\nmaths.h:941:17: error: no match for ‘operator~’ (operand type is ‘squish::Col3’)\r\n     griddltm = (~griddltp) + Col3(1);\r\n                 ^~~~~~~~~\r\nmaths.h: In member function ‘squish::Col3 squish::fQuantizer::MaskLattice(squish::Col3&) const’:\r\nmaths.h:947:15: error: no match for ‘operator&’ (operand types are ‘squish::Col3’ and ‘const squish::Col3’)\r\n     return (p & gridprc) + gridrnd;\r\n             ~~^~~~~~~~~\r\nmaths.h: In member function ‘squish::Col3 squish::fQuantizer::DeltaLattice(squish::Col3&, squish::Col3&) const’:\r\nmaths.h:959:20: error: no match for ‘operator&’ (operand types are ‘squish::Col3’ and ‘squish::Col3’)\r\n     return (d + b) & Col3(0x0000FFFF);\r\n            ~~~~~~~~^~~~~~~~~~~~~~~~~~\r\nmaths.h: In member function ‘squish::Col3 squish::fQuantizer::QuantizeToLattice(const squish::Vec3&) const’:\r\nmaths.h:965:30: error: no match for ‘operator>’ (operand types are ‘bool’ and ‘const squish::Vec3’)\r\n   Col3 p = FloatToSHalf<false>(val);\r\n            ~~~~~~~~~~~~~~~~~~^~~~~~\r\nIn file included from simd.h:65:0,\r\n                 from maths.h:256,\r\n                 from colourclusterfit.h:32,\r\n                 from colourclusterfit.cpp:30:\r\nsimd_float.h:1398:14: note: candidate: int squish::operator>(squish::Vec3::Arg, squish::Vec3::Arg)\r\n   friend int operator>(Vec3::Arg left, Vec3::Arg right  )\r\n              ^~~~~~~~\r\nsimd_float.h:1398:14: note:   no known conversion for argument 1 from ‘bool’ to ‘squish::Vec3::Arg {aka const squish::Vec3&}’\r\nIn file included from colourclusterfit.h:32:0,\r\n                 from colourclusterfit.cpp:30:\r\nmaths.h:975:58: error: ‘CompareAllEqualTo_M4’ was not declared in this scope\r\n   p += gridrnd & CompareAllEqualTo_M4(p, Col3(0x00000000));\r\n                                                          ^\r\nmaths.h:976:59: error: no match for ‘operator&’ (operand types are ‘squish::Col3’ and ‘const squish::Col3’)\r\n   p |=           CompareAllEqualTo_M4(p, Col3(0x0000FFFF) & gridprc);\r\n                                          ~~~~~~~~~~~~~~~~~^~~~~~~~~\r\nmaths.h: In member function ‘squish::Vec3 squish::fQuantizer::UnquantizeFromLattice(const squish::Col3&) const’:\r\nmaths.h:988:24: error: cannot convert ‘squish::Col3’ to ‘squish::u16 {aka short unsigned int}’ for argument ‘1’ to ‘squish::f23 squish::SHalfToFloat(squish::u16)’\r\n   return SHalfToFloat(p);\r\n                        ^\r\nIn file included from colourclusterfit.cpp:35:0:\r\ncoloursinglesnap.h: At global scope:\r\ncoloursinglesnap.h:52:8: error: ‘void squish::ColourSingleSnap::SetError(squish::Scr3&)’ cannot be overloaded\r\n   void SetError(Scr3 &error) { m_besterror = error; }\r\n        ^~~~~~~~\r\ncoloursinglesnap.h:51:8: error: with ‘void squish::ColourSingleSnap::SetError(squish::Scr4&)’\r\n   void SetError(Scr4 &error) { m_besterror = error; }\r\n        ^~~~~~~~\r\nIn file included from colourclusterfit.cpp:37:0:\r\ninlineables.cpp:48:29: error: expected initializer before ‘FloatToInt’\r\n static doinline int passreg FloatToInt(float a, int limit) ccr_restricted\r\n                             ^~~~~~~~~~\r\ninlineables.cpp:66:29: error: expected initializer before ‘FloatTo565’\r\n static doinline int passreg FloatTo565(Vec3::Arg colour) ccr_restricted\r\n                             ^~~~~~~~~~\r\ninlineables.cpp:86:29: error: expected initializer before ‘Unpack565’\r\n static doinline int passreg Unpack565(u8 const* packed, u8* colour) ccr_restricted\r\n                             ^~~~~~~~~\r\ninlineables.cpp:106:29: error: expected initializer before ‘FloatTo88’\r\n static doinline int passreg FloatTo88(Vec3::Arg colour) ccr_restricted\r\n                             ^~~~~~~~~\r\ninlineables.cpp:123:29: error: expected initializer before ‘Unpack88’\r\n static doinline int passreg Unpack88(u8 const* packed, u8* colour) ccr_restricted\r\n                             ^~~~~~~~\r\ninlineables.cpp:188:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[1], Col4 (&field)[1][FIELDN], int bitset) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:212:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[1], Col4 (&field)[1][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:287:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Col4 (&fielda)[1][FIELDN], Col4 (&fieldb)[1][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:305:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[2], Col4 (&field)[2][FIELDN], int bitset) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:333:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[2], Col4 (&field)[2][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:420:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Col4 (&fielda)[2][FIELDN], Col4 (&fieldb)[2][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:440:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[3], Col4 (&field)[3][FIELDN], int bitset) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:472:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Vec4 (&colour)[3], Col4 (&field)[3][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:571:30: error: expected initializer before ‘FloatTo’\r\n static doinline void passreg FloatTo(Col4 (&fielda)[3][FIELDN], Col4 (&fieldb)[3][FIELDN]) ccr_restricted\r\n                              ^~~~~~~\r\ninlineables.cpp:595:30: error: expected initializer before ‘UnpackFrom’\r\n static doinline void passreg UnpackFrom(Col4 (&field)[1][FIELDN]) ccr_restricted {\r\n                              ^~~~~~~~~~\r\ninlineables.cpp:644:30: error: expected initializer before ‘UnpackFrom’\r\n static doinline void passreg UnpackFrom(Col4 (&field)[2][FIELDN]) ccr_restricted {\r\n                              ^~~~~~~~~~\r\ninlineables.cpp:699:30: error: expected initializer before ‘UnpackFrom’\r\n static doinline void passreg UnpackFrom(Col4 (&field)[3][FIELDN]) ccr_restricted {\r\n                              ^~~~~~~~~~\r\ninlineables.cpp:765:30: error: expected initializer before ‘Codebook3or4’\r\n static doinline void passreg Codebook3or4(u8 (&codes)[4*4], bool bw) ccr_restricted\r\n                              ^~~~~~~~~~~~\r\ncolourclusterfit.cpp:1430:1: error: expected ‘}’ at end of input\r\n } // namespace squish\r\n ^\r\nmake: *** [Makefile:26: colourclusterfit.o] Error 1\r\n```\r\n\r\nwith clang++ 4.0.0\r\n\r\n```\r\nIn file included from colourclusterfit.cpp:30:\r\nIn file included from ./colourclusterfit.h:32:\r\nIn file included from ./maths.h:256:\r\nIn file included from ./simd.h:65:\r\n./simd_float.h:689:10: error: declaration of 'r' shadows template parameter\r\n    Col4 r;\r\n         ^\r\n./simd_float.h:686:22: note: template parameter is declared here\r\n  template<const int r, const int g, const int b, const int a>\r\n                     ^\r\n./simd_float.h:740:14: error: use of undeclared identifier 'MaskBits'\r\n      return MaskBits<n, 0>(right);\r\n             ^\r\n./simd_float.h:740:27: error: invalid operands to binary expression ('int' and 'const squish::Col4')\r\n      return MaskBits<n, 0>(right);\r\n                         ~^~~~~~~~\r\n./simd_float.h:742:23: error: use of undeclared identifier 'ShiftLeftHalf'\r\n      return (left) + ShiftLeftHalf<p>(right);\r\n                      ^\r\n./simd_float.h:744:12: error: use of undeclared identifier 'MaskBits'\r\n    return MaskBits<p, 0>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n           ^\r\n./simd_float.h:744:35: error: use of undeclared identifier 'MaskBits'\r\n    return MaskBits<p, 0>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                  ^\r\n./simd_float.h:744:50: error: use of undeclared identifier 'ShiftLeftHalf'\r\n    return MaskBits<p, 0>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                                 ^\r\n./simd_float.h:797:14: error: use of undeclared identifier 'MaskBits'\r\n      return MaskBits<n, 0>(right);\r\n             ^\r\n./simd_float.h:797:27: error: invalid operands to binary expression ('int' and 'const squish::Col4')\r\n      return MaskBits<n, 0>(right);\r\n                         ~^~~~~~~~\r\n./simd_float.h:799:23: error: use of undeclared identifier 'ShiftLeftHalf'\r\n      return (left) + ShiftLeftHalf<p>(right);\r\n                      ^\r\n./simd_float.h:801:12: error: use of undeclared identifier 'KillBits'\r\n    return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n           ^\r\n./simd_float.h:801:35: error: use of undeclared identifier 'MaskBits'\r\n    return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                  ^\r\n./simd_float.h:801:50: error: use of undeclared identifier 'ShiftLeftHalf'\r\n    return KillBits<n, p>(left) + MaskBits<n, p>(ShiftLeftHalf<p>(right));\r\n                                                 ^\r\n./simd_float.h:815:14: error: use of undeclared identifier 'MaskBits'\r\n      return MaskBits<n, 0>(a);\r\n             ^\r\n./simd_float.h:815:27: error: invalid operands to binary expression ('int' and 'const squish::Col4')\r\n      return MaskBits<n, 0>(a);\r\n                         ~^~~~\r\n./simd_float.h:817:14: error: use of undeclared identifier 'ShiftRightHalf'\r\n      return ShiftRightHalf<p>(a);\r\n             ^\r\n./simd_float.h:819:12: error: use of undeclared identifier 'MaskBits'\r\n    return MaskBits<n, 0>(ShiftRightHalf<p>(a));\r\n           ^\r\n./simd_float.h:819:27: error: use of undeclared identifier 'ShiftRightHalf'\r\n    return MaskBits<n, 0>(ShiftRightHalf<p>(a));\r\n                          ^\r\n./simd_float.h:830:14: error: use of undeclared identifier 'ExtrBits'\r\n    right  = ExtrBits<n, p>( left );\r\n             ^\r\nfatal error: too many errors emitted, stopping now [-ferror-limit=]\r\n8 warnings and 20 errors generated.\r\nmake: *** [Makefile:26: colourclusterfit.o] Error 1\r\n```"},"comment":{"url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/comments/352962346","html_url":"https://github.com/Ethatron/squish-ccr/issues/6#issuecomment-352962346","issue_url":"https://api.github.com/repos/Ethatron/squish-ccr/issues/6","id":352962346,"user":{"login":"Ethatron","id":1069236,"avatar_url":"https://avatars1.githubusercontent.com/u/1069236?v=4","gravatar_id":"","url":"https://api.github.com/users/Ethatron","html_url":"https://github.com/Ethatron","followers_url":"https://api.github.com/users/Ethatron/followers","following_url":"https://api.github.com/users/Ethatron/following{/other_user}","gists_url":"https://api.github.com/users/Ethatron/gists{/gist_id}","starred_url":"https://api.github.com/users/Ethatron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ethatron/subscriptions","organizations_url":"https://api.github.com/users/Ethatron/orgs","repos_url":"https://api.github.com/users/Ethatron/repos","events_url":"https://api.github.com/users/Ethatron/events{/privacy}","received_events_url":"https://api.github.com/users/Ethatron/received_events","type":"User","site_admin":false},"created_at":"2017-12-20T04:32:49Z","updated_at":"2017-12-20T04:32:49Z","author_association":"OWNER","body":"I haven't updated the non-SSE version of squish in ages. I'm not sure when I restore the possiblity."}}
{"actor":{"display_login":"Ethatron"}}