Hi Jeremy,

Jeremy Murphy wrote:
is there any other way around/through this? I am working with a point geometry with the same issue: the template type for dimensions is 'int' and it would be a lot of hassle to change it.


The type in trait specialization has to be specified correctly. So assuming that you don't want to change the geometry template you should change the specialization, like this:

    template<typename T, int tDimension = 2>
    class Point {};

    // ...

    template<typename Type, int tDimension>
    struct tag<Point<Type, tDimension>> {
        typedef point_tag type;
    };

Adam



On 4 October 2015 at 04:16, Adam Wulkiewicz <adam.wulkiewicz@gmail.com> wrote:
Hi,

2015-09-19 8:08 GMT+02:00 邓尧 <torshie@gmail.com>:


template<typename T, int tDimension = 2>
class Point {

<snip>


template<typename Type, std::size_t tDimension>
struct tag<::raptor::Point<Type, tDimension>> {
typedef point_tag type;
};


Different integral types are used for tDimension in Point class and traits specializations, after changing e.g. int to std::size_t in Point class the code compiles.

Regards,
Adam

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users