Boost logo

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