|
Boost : |
From: Paul Rose (prose_at_[hidden])
Date: 2007-01-25 09:28:32
In the process of getting familiar with Boost.Parameter I created the
following simple example:
#include <iostream>
#include <boost/parameter/keyword.hpp>
namespace Foo{
BOOST_PARAMETER_KEYWORD(tag, touch)
BOOST_PARAMETER_KEYWORD(tag, taste)
BOOST_PARAMETER_KEYWORD(tag, smell)
BOOST_PARAMETER_KEYWORD(tag, sight)
BOOST_PARAMETER_KEYWORD(tag, hearing)
template<class ArgumentPack>
void senses(ArgumentPack const &args){
std::cout << "touch: " << args[touch|"soft"] << std::endl;
std::cout << "taste: " << args[taste|"bitter"] << std::endl;
std::cout << "smell: " << args[smell|"foul"] << std::endl;
std::cout << "sight: " << args[sight|"bright"] << std::endl;
std::cout << "hearing: " << args[hearing|"loud"] << std::endl;
}
}
int main(){
using namespace Foo;
senses((sight="dim",hearing="quiet",taste="sweet",touch="rough",smell="s
tinky"));
return 0;
}
I expected the following output:
touch: rough
taste: sweet
smell: stinky
sight: dim
hearing: quiet
But when compiling with VC7.1 (cl.exe version 13.10.6030) and Boost
1.33.1 I get the following
touch: rough
taste: sweet
smell: foul
sight: bright
hearing: loud
Note the "hearing: loud" instead of "hearing: quiet".
I get the expected results under gcc 3.3.5 using the same Boost 1.33.1.
Is this a known issue? Is there a work around?
Thanks,
Paul Rose
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk