On Tuesday, 7 June 2016 at 08:09:49 UTC, Ethan Watson wrote:
On Tuesday, 7 June 2016 at 07:57:09 UTC, Walter Bright wrote:
C++ still suffers from:
http://www.digitalmars.com/articles/b44.html
and probably always will.
template< size_t size > void function( char ( &array )[ size ]
);
It's horrible syntax (no surprise), and being a templated
function means it's recompiled N times... but there's at least
something for it now.
There is array_view and string_view that have been proposed (and
I even think accepted) for C++17.
But if you want a fat pointer, you can just write one yourself:
template< typename T >
struct FatPtr
{
template< std::size_t N >
FatPtr( T (&a)[N] )
: p (a)
, n (N)
{ }
T *p;
std::size_t n;
};
void function( FatPtr<char> a );
int main( )
{
char a[128];
function(a);
function("foo");
}