config/test/boost_no_mem_tem_pnts.ipp

51 lines
975 B
C++

// Copyright (C) Joaquin M Lopez Munoz 2004.
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See http://www.boost.org/libs/config for most recent version.
// MACRO: BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
// TITLE: pointers to members as template arguments
// DESCRIPTION: Non-type template parameters which take pointers
// to members, fail to work correctly.
namespace boost_no_pointer_to_member_template_parameters{
struct pair
{
int x, y;
pair(int x_,int y_)
: x(x_), y(y_)
{}
};
template<int pair::* PtrToPairMember>
struct foo
{
int bar(pair& p)
{
return p.*PtrToPairMember;
}
};
int test()
{
pair p(0,1);
foo<&pair::x> fx;
foo<&pair::y> fy;
if((fx.bar(p) != 0) || (fy.bar(p) != 1))
return 1;
return 0;
}
}