Boost logo

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
Boost guidelines, but I hope you'll all forgive me. Indirectly it is through
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,
fails to compile, while Gcc is still ok!

Have we encountered this before, and is there a known work around?


- Rob.

Boost list run by bdawes at, gregod at, cpdaniel at, john at