|
Boost : |
Subject: [boost] [non Boost] Template troubles.
From: Robert Jones (robertgbjones_at_[hidden])
Date: 2008-12-10 04:29:37
Ok, first off, this is not explicitly about Boost, which I know is against
the
Boost guidelines, but I hope you'll all forgive me. Indirectly it is through
trying
to use Boost that i've bumped into this.
A little code snippet...
#include <cstddef>
template < typename T, std :: size_t sz >
struct Block
{
typedef T type[ sz ][ sz ];
};
template < typename T >
void assign( T & assignee, const T & value );
template < typename T, std :: size_t sz >
void assign( T ( & assignee )[ sz ], const T ( & value )[ sz ] );
int main( )
{
Block< int, 16 > :: type a;
const Block< int, 16 > :: type b = { };
assign( a, b );
}
This compiles under Gcc & Comeau, but MS VisStudio reckons the call
to assign in main is ambiguous. Any thoughts?
Also, if I put all the template declarations in an anonymous namespace,
Comeau
fails to compile, while Gcc is still ok!
Have we encountered this before, and is there a known work around?
Thanks.
- Rob.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk