[asio] static data member as buffer arg

Any obvious reason that supplying a static const data member to a buffer, for example: class Client { static const unsigned int sHandShakeGreeting = 0x01020304; ba::stream_socket mSock; ... void SomeFnc() { ba::async_write( aSocket , ba::buffer(&sHandShakeGreeting,4) , boost::bind( &Client::OnSent, this, _1, _2 ) ); } ... }; would behave differently from: const unsigned int sHandShakeGreeting = 0x01020304; class Client { ba::stream_socket mSock; ... void SomeFnc() { ba::async_write( aSocket , ba::buffer(&sHandShakeGreeting,4) , boost::bind( &Client::OnSent, this, _1, _2 ) ); } ... }; The above all occur within a .cpp file. In the latter case the dialog continues as expected, but the former results in the server(I don't have code for) not receiving a valid value. This is using VC7.1. Thanks, Jeff

Hi Jeff, --- Jeff Flinn <TriumphSprint2000@hotmail.com> wrote:
Any obvious reason that supplying a static const data member to a buffer, for example:
class Client { static const unsigned int sHandShakeGreeting = 0x01020304; <snip>
would behave differently from:
const unsigned int sHandShakeGreeting = 0x01020304;
class Client { <snip> The above all occur within a .cpp file. In the latter case the dialog continues as expected, but the former results in the server(I don't have code for) not receiving a valid value. This is using VC7.1.
This smells like a compiler bug. Are you able to reproduce it in a small program that sends data to an echo server, say? Also, do you have a definition for the static outside the class? i.e.: const unsigned int Client::sHandShakeGreeting; Cheers, Chris
participants (2)
-
Christopher Kohlhoff
-
Jeff Flinn