Saturday, November 28, 2009

comp.lang.c++ - 26 new messages in 14 topics - digest

comp.lang.c++
http://groups.google.com/group/comp.lang.c++?hl=en

comp.lang.c++@googlegroups.com

Today's topics:

* Why do some code bases don't use exceptions? - 6 messages, 3 authors
http://groups.google.com/group/comp.lang.c++/t/c255001068888229?hl=en
* HOT!!! 2009 Cheap wholesale True Relig Jeans at www.fjrjtrade.com <paypal
payment> - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/9f69e04387b0b54a?hl=en
* casting int's to an enum - 2 messages, 2 authors
http://groups.google.com/group/comp.lang.c++/t/c1c282ce004187e6?hl=en
* How can I sort this set? - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/0bd32b5633e0030a?hl=en
* how to achieve low latency in C++ - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/a27acf7c042642e9?hl=en
* I don't have to tell you... - 3 messages, 2 authors
http://groups.google.com/group/comp.lang.c++/t/f615b948e5cca45b?hl=en
* Possible to call a function to "many" times? - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/be1b60b85bd6e81b?hl=en
* Segmentation fault but now errors when running Valgrind - 3 messages, 2
authors
http://groups.google.com/group/comp.lang.c++/t/245ee50d3f1cbab8?hl=en
* Portability and marshalling integral data - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/d7831b8e84cbb8c3?hl=en
* Article on possible improvements to C++ - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/e46e9b3e07711d05?hl=en
* Subclassing std::string confusion? - 2 messages, 2 authors
http://groups.google.com/group/comp.lang.c++/t/fb74aed8c35e761f?hl=en
* Buy Lexapro 10 mg for cash on delivery. Buy cheap Lexapro weight loss. Order
Lexapro weight gain c.o.d.. Lexapro zoloft cost. - 2 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/4da16c2be8f397f7?hl=en
* ◈▣◈▣◈▣wholesale Apple Iphone 3Gs 16gb and 32gb, Iphone 3G 8gb and 16gb,
Nokia N97 www.toptradea.com ! - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/c8b17d894787609a?hl=en
* █田(⊙o⊙)田█Sneaker Nike,Jordan,Gucci,Adidas,Puma,EdhardyShox,Max,Free,Rift
sneaker and Levis,Polo,Lacoste,BBC,Gucci,Armani,LV,Christina Audigier Tshirt
and Jeans www.toptradea.com - 1 messages, 1 author
http://groups.google.com/group/comp.lang.c++/t/cae6f901d30ad656?hl=en

==============================================================================
TOPIC: Why do some code bases don't use exceptions?
http://groups.google.com/group/comp.lang.c++/t/c255001068888229?hl=en
==============================================================================

== 1 of 6 ==
Date: Fri, Nov 27 2009 11:53 pm
From: Ian Collins


Joshua Maurice wrote:
> On Nov 20, 8:09 pm, White Wolf <wo...@freemail.hu> wrote:
>> Paavo Helde wrote:
>>> Regarding Google, maybe they might have banned exceptions because of the
>>> run-time overhead (just guessing). Throwing exceptions is notoriously
>>> slow, so they should not be used unless something goes very wrong - but
>>> for a 24/7 service like Google nothing should go wrong ever, so no need
>>> for exceptions, right?
>> Notoriously slow is a pretty vague statement. Exceptions do not slower
>> the speed of the code unless they are thrown. So your choices are: slow
>> your happy code (that runs a billion times) by inserting hundreds of if
>> statements into it to propagate return codes up the call stack to the
>> handler, or make returning 1000 times slower 3 times a day... It is a
>> no brainer to me.
>
> Sadly no. That was the intent. However, on half of all of the unix-
> like environments available for me to test on, including Solaris, AIX,
> HPUX, Linux, and for the common windows platforms, win32, win64,
> exceptions add overhead even when not thrown, some worse than others.
> Windows, for example, implements C++ exceptions on top of their
> structured exception handling, which means that you're paying a
> penalty every time you enter a try block. For a particularly contrived
> test I once wrote, I got performance slowdowns of up to ~1.5x slower
> than the version which used error return codes on one platform.
>
> Not that I'm trying to say use exceptions or don't in this post. Just
> understand their practical costs and don't repeat (wishful)
> misinformation.

How have you measured? All my tests on Solaris with gcc and Sun CC have
shown the normal execution path to be faster with exceptions than
testing return values.

--
Ian Collins


== 2 of 6 ==
Date: Sat, Nov 28 2009 12:30 am
From: Joshua Maurice


On Nov 27, 11:53 pm, Ian Collins <ian-n...@hotmail.com> wrote:
> Joshua Maurice wrote:
> > On Nov 20, 8:09 pm, White Wolf <wo...@freemail.hu> wrote:
> >> Paavo Helde wrote:
> >>> Regarding Google, maybe they might have banned exceptions because of the
> >>> run-time overhead (just guessing). Throwing exceptions is notoriously
> >>> slow, so they should not be used unless something goes very wrong - but
> >>> for a 24/7 service like Google nothing should go wrong ever, so no need
> >>> for exceptions, right?
> >> Notoriously slow is a pretty vague statement.  Exceptions do not slower
> >> the speed of the code unless they are thrown.  So your choices are: slow
> >> your happy code (that runs a billion times) by inserting hundreds of if
> >> statements into it to propagate return codes up the call stack to the
> >> handler, or make returning 1000 times slower 3 times a day...  It is a
> >> no brainer to me.
>
> > Sadly no. That was the intent. However, on half of all of the unix-
> > like environments available for me to test on, including Solaris, AIX,
> > HPUX, Linux, and for the common windows platforms, win32, win64,
> > exceptions add overhead even when not thrown, some worse than others.
> > Windows, for example, implements C++ exceptions on top of their
> > structured exception handling, which means that you're paying a
> > penalty every time you enter a try block. For a particularly contrived
> > test I once wrote, I got performance slowdowns of up to ~1.5x slower
> > than the version which used error return codes on one platform.
>
> > Not that I'm trying to say use exceptions or don't in this post. Just
> > understand their practical costs and don't repeat (wishful)
> > misinformation.
>
> How have you measured?  All my tests on Solaris with gcc and Sun CC have
> shown the normal execution path to be faster with exceptions than
> testing return values.

My tests on Sun 64 with gcc also show that the implementation uses the
"correct" aka "good" aka table approach to implementing exceptions,
resulting in (near) zero overhead. (Sun on x86 is another story.)

Here are my tests first (which I did a year or two ago), giving a
basic description of the platform and the compiler options used. After
will be the code which I ran. Note that I did some marginal care to
make sure I wasn't seeing caching or preloading, but I don't claim
that these numbers are fullproof or otherwise reliable beyond a very
basic eyeball level. Specifically, I wouldn't use these numbers too
much beyond to answer "Does exception presence without ever throwing
cause overhead in C++ on X implementation?"

Note that I ran each test with input numbers to get a wallclock time
of ~30 seconds. Note that the test suite runs the tests in a (pseudo-)
random order to avoid some weird caching or optimization effects I was
seeing. (I think). Note that I do a single run of the individual test
before starting timing to try and minimize artificial caches misses.
Again, I do not claim that these tests are very thorough or robust or
even correct. I think they are.

Note that the compilers I'm using are somewhat old as well. I'm merely
using what my company used to compile our product on these platforms
several years ago. I do hope I used the right compiler options. (I did
some quick google research to determine the command line options.)

The x### is the factor comparing the slower of the two tests "virtual
exception" or "virtual fake try block" vs the test "virtual return
code".

Windows XP Pro 32
using visual studios 2003 32-bit compiler, standard release compiler
options.
Exception using code x1.04

AIX 32
% uname -a
AIX bigpine 2 5 0003DFC3D600
% xlC_r -V
C for AIX Compiler, Version 6
[Rest omitted]
% xlC_r -O4 -qnotempinc foo.cpp
Exception using code x0.94
(Yes. I have no clue why it's smaller, but it was a reproducible
number.)

AIX 64
% uname -a
AIX waco 2 5 00CAEAEA4C00
% xlC_r -V
C for AIX Compiler, Version 6
[Rest omitted]
% xlC_r -O4 -qnotempinc -q64 foo.cpp
Exception using code x1.48

HP 32
[9] % uname -a
HP-UX nimbus B.11.11 U 9000/800 2328359749 unlimited-user license
[10] % aCC -V
aCC: HP ANSI C++ B3910B A.03.73
[11] % aCC -AA -mt -z -ext -Wc,-ansi_for_scope,on +O3 foo.cpp
Exception using code x1.16

HP 64
[9] % uname -a
HP-UX cygnus B.11.11 U 9000/800 2328359751 unlimited-user license
[10] % aCC -V
aCC: HP ANSI C++ B3910B A.03.73
[11] % aCC -AA -mt -z -ext -Wc,-ansi_for_scope,on +O3 +DD64 foo.cpp
Exception using code x1.46

hp ipf
[11] % uname -a
HP-UX texan B.11.23 U ia64 0622264057 unlimited-user license
[12] % aCC -V
aCC: HP aC++/ANSI C B3910B A.06.05 [Jul 25 2005]
[13] % aCC -AA -mt -z -ext -Wc,-ansi_for_scope,on +O3 +DD64
+DSitanium2 foo.cpp
Exception using code x1.27

lin 32
[jmaurice@davey ~/test]$ uname -a
Linux davey.informatica.com 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39
EST 2005 i686 i686 i386 GNU/Linux
[jmaurice@davey ~/test]$ g++ --version
g++ (GCC) 3.4.3 20050227 (Red Hat 3.4.3-22.1)
[Rest omitted]
[jmaurice@nagara ~/test]$ g++ -O3 foo.cpp
Exception using code x1.0

lin 64
[jmaurice@nagara ~/test]$ uname -a
Linux nagara 2.6.9-11.ELsmp #1 SMP Fri May 20 18:25:30 EDT 2005 x86_64
x86_64 x86_64 GNU/Linux
[jmaurice@nagara ~/test]$ g++ --version
g++ (GCC) 3.4.3 20050227 (Red Hat 3.4.3-22.1)
[Rest omitted]
[jmaurice@nagara ~/test]$ g++ -O3 foo.cpp
Exception using code x1.0

lin IA 46
[jmaurice@seraph ~/test]$ g++ --version
g++ (GCC) 3.3.1
[Rest omitted]
[jmaurice@seraph ~/test]$ g++ -O3 foo.cpp
Exception using code x1.0

sun 64
[test] uname -a
SunOS mosquito 5.8 Generic_108528-29 sun4u sparc SUNW,Sun-Fire-V440
[test] CC -V
CC: Sun C++ 5.5 2003/03/12
[test] CC -O4 +w +w2 -mt -features=extensions -xarch=generic64 -
xtarget=generic64 foo.cpp
Exception using code x1.0

sun x86
[test] uname -a
SunOS coyote 5.10 Generic_Patch_118844-30 i86pc i386 i86pc
[test] CC -V
CC: Sun C++ 5.8 2005/10/13
[test] CC -O4 +w +w2 -mt -features=extensions foo.cpp
Exception using code x1.05

////
//Start test

#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;


enum ReturnCodeT { Success = 1, Failure = 2 };

class TestInterface
{
public:
virtual void virtualCanThrow(int a, int b, int targetSum) = 0;

virtual ReturnCodeT virtualReturnCode(int a, int b, int targetSum)
= 0;

ReturnCodeT inlineableReturnCode(int a, int b, int targetSum)
{ if (a + b == targetSum)
return Failure;
return Success;
}
};

inline ReturnCodeT globalInlineableReturnCode(int a, int b, int
targetSum)
{ if (a + b == targetSum)
return Failure;
return Success;
}


class TestImpl : public TestInterface
{
public:
virtual void virtualCanThrow(int a, int b, int targetSum)
{ if (a + b == targetSum)
throw 1;
}
virtual ReturnCodeT virtualReturnCode(int a, int b, int targetSum)
{ if (a + b == targetSum)
return Failure;
return Success;
}
};

class TestImpl2 : public TestInterface
{
public:
virtual void virtualCanThrow(int a, int b, int targetSum)
{ cout << "XXX" << endl;
}
virtual ReturnCodeT virtualReturnCode(int a, int b, int targetSum)
{ cout << "XXX" << endl;
return Success;
}
};


void testInlineableMemberReturnCode(TestInterface *& x, int arg1, int
arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
{ for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
if (Failure == x->inlineableReturnCode(i, j, arg2+3))
{ cout << "inlineable member return code, returned
failure" << endl;
x = new TestImpl2();
}
}
}
if (vec.size() && vec.back() == arg2+3)
{ cout << "inlineable member return code, vector size
comparison true" << endl;
x = new TestImpl2();
}
}
}
void testInlineableGlobalReturnCode(TestInterface *& x, int arg1, int
arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
if (Failure == globalInlineableReturnCode(i, j,
arg2+4))
cout << "inlineable global return code, returned
failure" << endl;
}
if (vec.size() && vec.back() == arg2+4)
cout << "inlineable global return code, vector size
comparison true" << endl;
}
}
void testVirtualReturnCodeFakeTry(TestInterface *& x, int arg1, int
arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
{ for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
try
{ if (Failure == x->virtualReturnCode(i, j, arg2+5))
{ cout << "virtual return code with fake try,
returned failure" << endl;
x = new TestImpl2();
}
} catch (...)
{ cout << "ERROR impossible exception caught" <<
endl;
x = new TestImpl2();
}
}
}
if (vec.size() && vec.back() == arg2+5)
{ cout << "virtual return code with fake try, vector size
comparison true" << endl;
x = new TestImpl2();
}
}
}
void testVirtualReturnCode(TestInterface *& x, int arg1, int arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
{ for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
if (Failure == x->virtualReturnCode(i, j, arg2+6))
{ cout << "virtual return code, returned failure" <<
endl;
x = new TestImpl2();
}
}
}
if (vec.size() && vec.back() == arg2+6)
{ cout << "virtual return code, vector size comparison true"
<< endl;
x = new TestImpl2();
}
}
}
void testVirtualException(TestInterface *& x, int arg1, int arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
{ for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
try
{ x->virtualCanThrow(i, j, arg2+7);
} catch (int & )
{ cout << "virtual exception, exception caught" <<
endl;
x = new TestImpl2();
}
}
}
if (vec.size() && vec.back() == arg2+7)
{ cout << "virtual exception, vector size comparison true"
<< endl;
x = new TestImpl2();
}
}
}
void testManuallyInlinedReturnCode(TestInterface *& x, int arg1, int
arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
{ for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
ReturnCodeT retVal;
if (i + j == arg2+8)
retVal = Failure;
else
retVal = Success;
if (retVal == Failure)
{ cout << "manually inlined return code, failure
'returned'" << endl;
x = new TestImpl2();
}
}
}
if (vec.size() && vec.back() == arg2+8)
{ cout << "manually inlined return code, vector size
comparison true" << endl;
x = new TestImpl2();
}
}
}
void testManuallyInlinedOptimizedReturnCode(TestInterface *& x, int
arg1, int arg2)
{ { vector<int> vec;
for (int i=0; i<arg1; ++i)
for (int j=0; j<arg1; ++j)
{ //vec.push_back(i+j);
if (i + j == arg2+9)
{ cout << "manually inlined and optimized return
code, failure 'returned'" << endl;
x = new TestImpl2();
}
}
if (vec.size() && vec.back() == arg2+9)
{ cout << "manually inlined and optimized return code,
vector size comparison true" << endl;
x = new TestImpl2();
}
}
}

int main(int argc, char ** argv)
{
if (argc != 3 && argc != 4)
return 1;

int arg1;
if (! (stringstream(argv[1]) >> arg1))
return 1;

int arg2;
if (! (stringstream(argv[2]) >> arg2))
return 1;

TestInterface * x;

if (argc == 3)
x = new TestImpl();
else
x = new TestImpl2();

vector<clock_t> retVal;

typedef void (*TestFuncType)(TestInterface *&, int, int);
vector<pair<string, TestFuncType> > remainingTests;

remainingTests.push_back(make_pair(string("Inlineable Member
Return Code"), & testInlineableMemberReturnCode));
remainingTests.push_back(make_pair(string("Inlineable Global
Return Code"), & testInlineableGlobalReturnCode));
remainingTests.push_back(make_pair(string("Virtual Return Code
Fake Try"), & testVirtualReturnCodeFakeTry));
remainingTests.push_back(make_pair(string("Virtual Return
Code"), & testVirtualReturnCode));
remainingTests.push_back(make_pair(string("Virtual
Exception"), & testVirtualException));
remainingTests.push_back(make_pair(string("Manually Inlined Return
Code"), & testManuallyInlinedReturnCode));
remainingTests.push_back(make_pair(string("Manually Inlined
Optimized Return Code"), & testManuallyInlinedOptimizedReturnCode));

srand(time(0));

while (remainingTests.size())
{
int index = rand() % remainingTests.size();
pair<string, TestFuncType> thisTest = remainingTests[index];
remainingTests.erase(remainingTests.begin() + index);

clock_t t0 = clock();
(*thisTest.second)(x, 1, -10);
clock_t t1 = clock();
(*thisTest.second)(x, arg1, arg2);
clock_t t2 = clock();

cout << setw(40) << thisTest.first << " : " << double(t2 -
t1) / double(CLOCKS_PER_SEC) << endl;
}
}


== 3 of 6 ==
Date: Sat, Nov 28 2009 12:32 am
From: Joshua Maurice


Err, I specifically ran the tests with a command line like:
% ./a.out 30000 -10
or
% ./a.out ${number} -10


== 4 of 6 ==
Date: Sat, Nov 28 2009 12:34 am
From: Joshua Maurice


On Nov 27, 11:48 pm, Joshua Maurice <joshuamaur...@gmail.com> wrote:
However, on half of all of the unix-
> like environments available for me to test on, including Solaris, AIX,
> HPUX, Linux, and for the common windows platforms, win32, win64,
> exceptions add overhead even when not thrown, some worse than others.

That should read "I have done tests on X platforms, and of those X,
roughly half implement exceptions the slow aka bad aka not table way",
not "The listed platforms are all bad." Some of the listed platforms
implement exceptions the good way. See earlier posts. Sorry for the
confusion.


== 5 of 6 ==
Date: Sat, Nov 28 2009 12:38 am
From: Joshua Maurice


On Nov 28, 12:30 am, Joshua Maurice <joshuamaur...@gmail.com> wrote:
> lin IA 46
> [jmaurice@seraph ~/test]$ g++ --version
> g++ (GCC) 3.3.1
> [Rest omitted]
> [jmaurice@seraph ~/test]$ g++ -O3 foo.cpp
> Exception using code x1.0

Ack again. I just copied and pasted something I had lying around, and
apparently it was in error. That's supposed to be "lin IA 64", and I
missed the "uname -a" results.

[jmaurice@seraph ~]$ uname -a
Linux seraph 2.6.9-34.EL #1 SMP Fri Feb 24 16:49:08 EST 2006 ia64 ia64
ia64 GNU/Linux

Sorry. It's late for me, and I wanted to be prompt with my reply for
the curious Ian Collins.


== 6 of 6 ==
Date: Sat, Nov 28 2009 4:00 am
From: "Bo Persson"


Joshua Maurice wrote:
> On Nov 20, 8:09 pm, White Wolf <wo...@freemail.hu> wrote:
>> Paavo Helde wrote:
>>> Regarding Google, maybe they might have banned exceptions because
>>> of the run-time overhead (just guessing). Throwing exceptions is
>>> notoriously slow, so they should not be used unless something
>>> goes very wrong - but for a 24/7 service like Google nothing
>>> should go wrong ever, so no need for exceptions, right?
>>
>> Notoriously slow is a pretty vague statement. Exceptions do not
>> slower the speed of the code unless they are thrown. So your
>> choices are: slow your happy code (that runs a billion times) by
>> inserting hundreds of if statements into it to propagate return
>> codes up the call stack to the handler, or make returning 1000
>> times slower 3 times a day... It is a no brainer to me.
>
> Sadly no. That was the intent. However, on half of all of the unix-
> like environments available for me to test on, including Solaris,
> AIX, HPUX, Linux, and for the common windows platforms, win32,
> win64, exceptions add overhead even when not thrown, some worse
> than others. Windows, for example, implements C++ exceptions on top
> of their structured exception handling, which means that you're
> paying a penalty every time you enter a try block.

That's true for win32, but not for win64.

>
> Not that I'm trying to say use exceptions or don't in this post.
> Just understand their practical costs and don't repeat (wishful)
> misinformation.

Right! :-)


Bo Persson

==============================================================================
TOPIC: HOT!!! 2009 Cheap wholesale True Relig Jeans at www.fjrjtrade.com <
paypal payment>
http://groups.google.com/group/comp.lang.c++/t/9f69e04387b0b54a?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 12:48 am
From: "www.fjrjtrade.com"


HOT!!! 2009 Cheap wholesale True Relig Jeans at www.fjrjtrade.com
<paypal payment>


Cheap Wholesale Jeans www.fjrjtrade.com

Cheap Wholesale True Relig Jeans www.fjrjtrade.com

Cheap Wholesale True Relig Jeans www.fjrjtrade.com

Cheap Wholesale others Jeans www.fjrjtrade.com

╃Men Size 30,32,34,36,38,40 Women Size 26,27,28,29,30,31 Cheap
Wholesale Jean

http://www.fjrjtrade.com/category-1261-b0-Jean.html

Wholesale True Relig Jeans (paypal payment)

http://www.fjrjtrade.com/category-1285-b0-True-Relig-Jean.html

Wholesale True Relig Men Jeans (paypal payment)

http://www.fjrjtrade.com/category-1289-b0-True-Relig-Man-Jean.html

Wholesale True Relig Women Jeans (paypal payment)

http://www.fjrjtrade.com/category-1290-b0-True-Relig-Women-Jean.html


Website:
http://www.fjrjtrade.com


==============================================================================
TOPIC: casting int's to an enum
http://groups.google.com/group/comp.lang.c++/t/c1c282ce004187e6?hl=en
==============================================================================

== 1 of 2 ==
Date: Sat, Nov 28 2009 1:06 am
From: Angus


With the following code:

enum testenum { in, out, append };

int val = 17;

testenum myenum = static_cast<testenum>(val);

Using my compiler it looks like myenum is given a value of 17! What
strategies do you suggest for dealing with this problem. One
possibility is to do this:

enum testenum { in, out, append, testmax };
int val = 17;
if(val > testenum ::testmax)
//error

testenum myenum = static_cast<testenum>(val);

Any other ideas?

Reason I ask is enum value is taken from a message which could contain
incorrect information.

== 2 of 2 ==
Date: Sat, Nov 28 2009 3:00 am
From: Gert-Jan de Vos


On Nov 28, 10:06 am, Angus <anguscom...@gmail.com> wrote:
> With the following code:
>
>         enum testenum { in, out, append };
>
>         int val = 17;
>
>         testenum myenum = static_cast<testenum>(val);
>
> Using my compiler it looks like myenum is given a value of 17!  What
> strategies do you suggest for dealing with this problem.  One
> possibility is to do this:
>
> enum testenum { in, out, append, testmax };
> int val = 17;
> if(val > testenum ::testmax)
>     //error
>
> testenum myenum = static_cast<testenum>(val);
>
> Any other ideas?
>
> Reason I ask is enum value is taken from a message which could contain
> incorrect information.

You want runtime validation of a large range of values (ints) to a
small range and make a well defined mapping. Like this:

testenum get_testenum(int value)
{
switch (value)
{
case in: return in;
case out: return out;
case append: return append;
}
throw std::runtime_error("bad enum conversion");
}

I need that often in my code and I have a template:

template <typename Dst, typename Src> Dst enum_cast(Src en);

For which I make a specialization for all the conversions I need.
I have some macros:

BEGIN_ENUM_MAP(src, dst)
ENUM_ENTRY(src, dst)
END_ENUM_MAP()

That generate the specializations and switch/case code. I normally use
it to convert between enums but this works too:

int i = enum_cast<int>(append);
testenum e = enum_cast<test_enum>(1);
std::string s = enum_cast<std::string>(out);

==============================================================================
TOPIC: How can I sort this set?
http://groups.google.com/group/comp.lang.c++/t/0bd32b5633e0030a?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 1:19 am
From: petertwocakes


On 28 Nov, 07:06, David Harmon <sou...@netcom.com> wrote:
> On Fri, 27 Nov 2009 13:47:46 -0800 (PST) in comp.lang.c++, petertwocakes
> <petertwoca...@googlemail.com> wrote,
>
> >I have
>
> >typedef vector<string> TokenVector
> >which is an array of string (words) making up a sentence.
> >For the purposes of my app I need it structured like this, rather than
> >a single composite string.
>
> >then I have
>
> >typedef set<TokenVector, compare > TokenVectorSet;
>
> >which is a set of such sentences.
>
> >I want to sort the set in to alphabetical order, as if I was dealing
> >with composite strings.
>
> Make life easy for yourself, construct the composite strings, then use
> std::map<string, TokenVector>

Thanks Sam, Jiří & David

Changed const int p1 to const TokenVector &a etc. (My silly mistake)

Got rid of std::vector<TokenVector> * myObjects; as suggested.
All the googled examples I found before asking here, seemed to include
that, though I didn't understand what it was doing.

It works now :)

" - you can check if the default (lexicographic) ordering on vectors
isn't
consistent with your needs"

Remarkably it is, even though I've now sub-classed string to 'Token'
to use in TokenVector.
That's almost like magic ;) But glad I've learned about custom
functors anyway.

"Make life easy for yourself, construct the composite strings, then
use
std::map<string, TokenVector>"

Thanks, ultimately I probably will, but initially this was a learning
exercise as much as anything.

Thanks.


==============================================================================
TOPIC: how to achieve low latency in C++
http://groups.google.com/group/comp.lang.c++/t/a27acf7c042642e9?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 1:20 am
From: Angus


On 24 Nov, 13:03, Vladimir Jovic <vladasp...@gmail.com> wrote:
> jacob navia wrote:
>
> > If you start a long operation, check as often as you can, if there is
> > something new
> > in the pipeline.
>
> > And, if your system is multi-threaded, have a thread check periodically
> > if there is
> > something new to answer to, during the time other threads are
> > calculating/processing
> > previous inputs.
>
> Blocked reads FTW!
>
> --
> ultrasoundwww.ezono.com

As mentioned by other responders it will very much depend on what your
software is doing. Consider an event driven, asynchronous approach.
ie you send an asynchronous request, get on with whatever you can do
and then at some later point you will receive a message that your
request has completed.

Not sure if this answers your question. Would need more info on your
requirements/architecture/etc.

==============================================================================
TOPIC: I don't have to tell you...
http://groups.google.com/group/comp.lang.c++/t/f615b948e5cca45b?hl=en
==============================================================================

== 1 of 3 ==
Date: Sat, Nov 28 2009 1:51 am
From: "Alf P. Steinbach"


* Pavel:
> Alf P. Steinbach wrote:
>> * Pavel:
>>> Bo Persson wrote:
>>>> Balog Pal wrote:
>>>>> "Alf P. Steinbach"<alfps@start.no>
>>>>>>>>>>> http://www.artima.com/cppsource/nevercall.html
>>>>>>>>>>> - "Never Call Virtual Functions during Construction or
>>>>>>>>>>> Destruction"
>>>>>>>>>>
>>>>>>>>>> This, however, is total bullshit.
>>>>>>>>>
>>>>>>>>> It isn't. It's Item#9 form EC++,
>>>>>>>>
>>>>>>>> I don't care about the messenger. The message is bullshit.
>>>>>>>> Really bad advice. FUD. Even in the context of programming for
>>>>>>>> constrained embedded systems (there's no connection).
>>>>>>>
>>>>>>> I'm confused. Please quote me the part of the message which fits
>>>>>>> the description, or elaborate.
>>>>>>
>>>>>> Every part of the quoted part is meaningless FUD.
>>>>>>
>>>>>> So, I haven't looked at the rest. :-)
>>>>>
>>>>> And doing so you flushed the baby with the bathwater. FUD is
>>>>> something that puts down a claim and either not include rationale
>>>>> at all or creates a phony one. You shouldn't address content such
>>>>> without reading it.
>>>>>> The point is that you don't have to care whether the methods are
>>>>>> virtual or not.
>>>>>> In C++ it's safe to call them anyway.
>>>>> ...
>>>>>> But as an abstract example, if a base class has a non-virtual
>>>>>> method foo(), that calls a virtual method bar(), and your derived
>>>>>> class T overrides bar(), then in your T constructor you can call
>>>>>> foo and foo's call of bar() ends up in T::bar.
>>>>>>
>>>>>> It's a not uncommon scenario. The mentioned bugs in Java programs
>>>>>> are mainly due to this scenario occurring often in actual code. In
>>>>>> C++ it's no problem. :-)
>>>>>
>>>>> It *IS* a problem. One you appear to miss entirely, or turn a
>>>>> blind eye.
>>>>> The problem is not of the nature you argue against. Technically
>>>>> the call works, and what it does is fully defined. And what
>>>>> happens (IMO) makes more sense too, than say in java.
>>>>>
>>>>> The problem is a human one -- when calls to virtuals are done,
>>>>> directly or indirectly, the expectation is they end up in the most
>>>>> derived object. In the real-life and not the technical sense.
>>>>> People are (appear) just not aware that in ctor and dtor different
>>>>> rules apply, and expect the code just work by magic -- as it does
>>>>> in every other context.
>>>>
>>>> Why, oh why, should the base class constructor be bothered to call
>>>> code in the derived class?
>>> Because
>>>
>>> 1. It is what the user wants and the compiler has enough information
>>> to generate this code and thereby satisfy the user (the information
>>> about object of which most derived class is actually being created is
>>> known at compile time). Note: if what the user wants is to call the
>>> base class's virtual function, s/he can always force it by explicit
>>> qualification.
>>
>> Incorrect.
>>
>> Consider in class T construtor a call to a base class' foo which calls
>> virtual bar which is overridden in T.
> I am not sure I am following your sentence above. Did you mean this?
>
> class BT { public:
> void foo() { bar(); }
> virtual void bar() { cout << "BT::bar()\n"; }
> };
>
> class T {
> T() { foo(); }
> };
>
> This does not present a problem in either specs (existing or desired) as
> the derived class' bar() is called in both cases. If you meant anything
> different could you please show sample code?

class BT
{
private:
virtual void bar() { say( "BT" ); }
public:
void foo() { bar(); }
};

class T
: public BT
{
private:
virtual void bar() { say( "T" ); }
public:
T() { foo(); }
};

class D
: public T
{
private:
std::string myPavelonian;
virtual void bar() { say( myPavelonian.c_str(); }
public:
D(): myPavelonian( "D" ) {}
};

int main() { D(); }

Works well with C++ rules, calling T::bar as the T programmer intended.

Undefined behavior with Pavel/Howard rules.

Contrary to your claim there's no way to use explicit qualification in class T
or in class BT to make it call T::bar with Pavel/Howard rules.


>>> 2. It allows more efficient implementation (the known-to-me C++
>>> implementations first write a pointer to virtual table of the base
>>> class to the object; then override it with the pointer to derived
>>> class's table; this is unnecessary and unjustified overhead breaking
>>> the promise of C++ to be as efficient as possible)
>>
>> Yes, efficiency can be improved.
>>
>>
>>> 3. The promise of C++ to be as powerful and dangerous to allow the
>>> programmer to blow up his/her entire leg is broken.
>>
>> No, you can do whatever you want.
> Thanks! I guess I did not know that before.
>
>> But if you want to do nonsensical
>> initialization you'll have to do it yourself. Not via the language's
>> mechanisms.
> You can do whatever you want, too, in particular boldly business
> requirements "nonsensical".

Yes, it would be bold to require undefined behavior.


Hth.,

- Alf


== 2 of 3 ==
Date: Sat, Nov 28 2009 3:44 am
From: "Bo Persson"


Pavel wrote:
> Bo Persson wrote:
>> Balog Pal wrote:
>>> "Alf P. Steinbach"<alfps@start.no>
>>>>>>>>> http://www.artima.com/cppsource/nevercall.html
>>>>>>>>> - "Never Call Virtual Functions during Construction or
>>>>>>>>> Destruction"
>>>>>>>>
>>>>>>>> This, however, is total bullshit.
>>>>>>>
>>>>>>> It isn't. It's Item#9 form EC++,
>>>>>>
>>>>>> I don't care about the messenger. The message is bullshit.
>>>>>> Really bad advice. FUD. Even in the context of programming for
>>>>>> constrained embedded systems (there's no connection).
>>>>>
>>>>> I'm confused. Please quote me the part of the message which
>>>>> fits the description, or elaborate.
>>>>
>>>> Every part of the quoted part is meaningless FUD.
>>>>
>>>> So, I haven't looked at the rest. :-)
>>>
>>> And doing so you flushed the baby with the bathwater. FUD is
>>> something that puts down a claim and either not include rationale
>>> at all or creates a phony one. You shouldn't address content such
>>> without reading it.
>>>> The point is that you don't have to care whether the methods are
>>>> virtual or not.
>>>> In C++ it's safe to call them anyway.
>>> ...
>>>> But as an abstract example, if a base class has a non-virtual
>>>> method foo(), that calls a virtual method bar(), and your derived
>>>> class T overrides bar(), then in your T constructor you can call
>>>> foo and foo's call of bar() ends up in T::bar.
>>>>
>>>> It's a not uncommon scenario. The mentioned bugs in Java programs
>>>> are mainly due to this scenario occurring often in actual code.
>>>> In C++ it's no problem. :-)
>>>
>>> It *IS* a problem. One you appear to miss entirely, or turn a
>>> blind eye.
>>> The problem is not of the nature you argue against. Technically
>>> the call works, and what it does is fully defined. And what
>>> happens (IMO) makes more sense too, than say in java.
>>>
>>> The problem is a human one -- when calls to virtuals are done,
>>> directly or indirectly, the expectation is they end up in the most
>>> derived object. In the real-life and not the technical sense.
>>> People are (appear) just not aware that in ctor and dtor different
>>> rules apply, and expect the code just work by magic -- as it does
>>> in every other context.
>>
>> Why, oh why, should the base class constructor be bothered to call
>> code in the derived class?
> Because
>
> 1. It is what the user wants and the compiler has enough
> information to generate this code and thereby satisfy the user (the
> information about object of which most derived class is actually
> being created is known at compile time). Note: if what the user
> wants is to call the base class's virtual function, s/he can always
> force it by explicit qualification.

You shouldn't always give people what they believe they want. :-)

Calling a virtual function on a non-existing object is one of those
things. Here C++ avoids undefined behavior by defining that you can
only call the function for the object that actually exists at that
point.

>
> 2. It allows more efficient implementation (the known-to-me C++
> implementations first write a pointer to virtual table of the base
> class to the object; then override it with the pointer to derived
> class's table; this is unnecessary and unjustified overhead
> breaking the promise of C++ to be as efficient as possible)

There is an extra cost for this, true.

>
> 3. The promise of C++ to be as powerful and dangerous to allow the
> programmer to blow up his/her entire leg is broken.

My impression is that C++ tries to avoid the shoot-in-the-foot
situation whenever possible (and without a run-time cost :-). This
does leave some opportunities for blowing a leg off, for the
adventurous programmer.

>
> 4. It is proven to work (by Java for example).

For some definition of work. I'm no Java expert, but from what I
understand the cost you want to avoid in 2) now moves to a test for a
fully constructed object in every call to the function.

>>
>> That is the responsiblity of the derived class' constructor, which
>> will no doubt be executed a microsecond later.
>>

My point is that the derived object should fully construct itself, and
not depend on the base object calling some function during its
construction. It is about the distribution of responsibilities.


Bo Persson


== 3 of 3 ==
Date: Sat, Nov 28 2009 3:49 am
From: "Bo Persson"


Joshua Maurice wrote:
> After reading more, I'm still not quite clear on what Howard Beale
> want, so I ask again. More clearly: what is wrong with C++, its
> order of construction and destruction, and how virtual calls
> interact.
>
> Let's first presuppose that constructors and destructors themselves
> are not broken. Correct me if you think they are.
>
> That leaves us with this heated, and quite unclear, discussion about
> which function should be called when you call a virtual function in
> a constructor or destructor. I think our options are:
>
> 1- Call function on uninitialized (or destroyed) derived class. This
> will almost certainly be bad, and not what the programmer intended
> (or the programmer is not familiar with the language and good code
> design, and the design is bad).
>
> 2- What is currently done. It goes to the most derived currently
> constructed object.
>
> 3- Disallow virtual function calls on objects under construction or
> destruction.
>
> I think I like #2 the most, though I can see some utility from #3.
> Howard, I still think you are arguing for #1, and I strongly
> disagree with that option on my knowledge and years of experience.

A agree with this, and believe that in the few cases where #1 might
actually work is where it just returns a fixed value to the caller. In
those rare cases, the value could just as well be a parameter to the
base class' constructor.


Bo Persson

==============================================================================
TOPIC: Possible to call a function to "many" times?
http://groups.google.com/group/comp.lang.c++/t/be1b60b85bd6e81b?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 2:24 am
From: "carl"

"Daniel Pitts" <newsgroup.spamfilter@virtualinfinity.net> wrote in message
news:_l1Qm.16919$cX4.2724@newsfe10.iad...
> carl wrote:
>> VectorType is:
>>
>> typedef Vector<TScalarType, SpaceDimension> VectorType;
>>
>>
>> What do you mean that "vectorPoint[0] doesn't exist " ?
>>
>> When I do:
>>
>> VectorType vectorPoint;
>>
>> I create the vector. When I do:
>>
>> for (int i=0; i<NDimensions; i++) {
>> vectorPoint[i] = point[i];
>>
>> each element from the point is copied to the vector. So that should work
>> fine.
>
> wrong, the [] operator does not create a position, so your overwriting
> memory you don't own. use vectorPoint.push_back(point[i]) instead.
>
> The declaration "VectorType vectorPoint;" will create an *empty* vector,
> which means no elements exist in it. vectorPoint[0] will not increase the
> size of the vector, so you will (most likely) be referencing unallocated
> memory.

But its not a std::vector its a itk::vector, which is basically a
non-dynamic array (size is fixed):

http://www.orfeo-toolbox.org/doxygen/classitk_1_1Vector.html

so I am pretty sure the above should work correct.


==============================================================================
TOPIC: Segmentation fault but now errors when running Valgrind
http://groups.google.com/group/comp.lang.c++/t/245ee50d3f1cbab8?hl=en
==============================================================================

== 1 of 3 ==
Date: Sat, Nov 28 2009 2:24 am
From: "carl"


I have made an application that throws a segmentation fault when I run it.

./MyApp
Segmentation fault

I have then tried to run it with Valgrind:


valgrind --leak-check=yes --track-origins=yes ./MyApp
==8389==
==8389== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 8 from 1)
==8389== malloc/free: in use at exit: 0 bytes in 0 blocks.
==8389== malloc/free: 13,153,309 allocs, 13,153,309 frees,
8,529,290,300 bytes allocated.
==8389== For counts of detected errors, rerun with: -v
==8389== All heap blocks were freed -- no leaks are possible.


So Valgrind cannot find any errors but I still get a segmentation fault when
running the app without Valgrind.

I have used almost a week to go through the code and I have written
unit-test for each part. Any ideas on how to find this error when valgrind
fails to find it or is the just a program that is cursed?


== 2 of 3 ==
Date: Sat, Nov 28 2009 2:26 am
From: Ian Collins


carl wrote:
> I have made an application that throws a segmentation fault when I run it.
>
> ./MyApp
> Segmentation fault

What happens when you run the application under a debugger?

--
Ian Collins


== 3 of 3 ==
Date: Sat, Nov 28 2009 3:23 am
From: "carl"

"Ian Collins" <ian-news@hotmail.com> wrote in message
news:7ncc6uF3jv846U1@mid.individual.net...
> carl wrote:
>> I have made an application that throws a segmentation fault when I run
>> it.
>>
>> ./MyApp
>> Segmentation fault
>
> What happens when you run the application under a debugger?
>
> --
> Ian Collins

I have tried that but the error first appears when a subrutine is called
after 20.000 to 30.000 iterations. I have made something like this:

if (call_count < call_limit) {

//call the failing function
call_count++;
}

When I set call_limit is between 20.000 and 30.000 it works fine but it
varies from call to call.

One possible way would be to put a break inside the above if-statement and
then have a starting count and a end count. But the interval would still be
around a few thousands and my fingers will begin to bleed if I need to press
the skip key in the debugger that many times.


==============================================================================
TOPIC: Portability and marshalling integral data
http://groups.google.com/group/comp.lang.c++/t/d7831b8e84cbb8c3?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 3:04 am
From: "dragan"

"James Kanze" <james.kanze@gmail.com> wrote in message
news:f941e7f4-bb19-4699-81fd-d286e05add89@g27g2000yqn.googlegroups.com...
> On Nov 27, 4:17 am, "dragan" <spambus...@prodigy.net> wrote:
>> James Kanze wrote:
>> > On Nov 25, 11:09 pm, "dragan" <spambus...@prodigy.net> wrote:
>> >> James Kanze wrote:
>> >>> On Nov 25, 11:45 am, "dragan" <spambus...@prodigy.net> wrote:
>
>> > [...]
>> > Historically, this mistake was made a lot in the early days
>> > of networking. XDR, for example, follows exactly the
>> > conventions of the Motorola 68000, and until fairly
>> > recently, you could just memory dump data from a 32 bit
>> > Sparc, and it would be conform to the protocol. (I think
>> > more modern Sparc's require 8 byte alignment of double,
>> > whereas the protocol only requires 4 byte alignment.) Of
>> > course, if you're on an Intel platform, you'll need some
>> > extra work. (This works against Brian's idea, since most
>> > servers are still big-endian, where as Intel dominates the
>> > client side overwhelmingly.)
>
>> Knowing that, you then shouldn't have "suggested" to "make the
>> platform the spec", something I never implied whatsoever but
>> that you chose to take to the extreme.
>
> I have never suggested such a thing. Just the opposite. (But I
> know: in these long threads, it's often difficult to keep track
> of who said what. And others definitely have proposed such a
> thing.)
>
"I dunno".. if "credibility" would equal your sorry lame ass, well it would
explain the downfall of the american economy! Hello. Bitch.


==============================================================================
TOPIC: Article on possible improvements to C++
http://groups.google.com/group/comp.lang.c++/t/e46e9b3e07711d05?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 3:16 am
From: "dragan"

"Ian Collins" <ian-news@hotmail.com> wrote in message
news:7n9f7lF3k28t6U1@mid.individual.net...
> dragan wrote:
>> Ian Collins wrote:
>>> paulto wrote:
>>>> dragan wrote:
>>>> [snipped]
>>>>>> Quite a bit of code will you need to properly destroy automatic
>>>>>> objects (which is quite often the required part of "error
>>>>>> handling". If handling of an error does not require stepping way
>>>>>> back, that error can be IMHO renamed to "yet another condition
>>>>>> arising at normal course of given business").
>>>>> Another simple answer from moi: RAII. Problem solved. RAII and
>>>>> exceptions are orthogonal concepts. RAII works as good with other
>>>>> error handling strategies as it does with exceptions.
>>>> RAII is a great idea but you need something to kick off the
>>>> destructors. It may be an important component of error handling
>>>> strategy but exception or something else is needed to actually kick
>>>> off object destruction if error processing requires changing the
>>>> context outside of normal flow control operation.
>>> That's exactly what RAII does for you. You manage resources so they
>>> will be freed when the managing object goes out of scope.
>>
>> That's all I had to say? I just spent a half hour replying to him. Twas
>> time well-spent though. I don't regret it at all. (OK, I do, but for
>> selfish/time reasons).
>
> Sorry, that was bad form relying out of context.
>
I don't know what you meant. But I don't think so.

==============================================================================
TOPIC: Subclassing std::string confusion?
http://groups.google.com/group/comp.lang.c++/t/fb74aed8c35e761f?hl=en
==============================================================================

== 1 of 2 ==
Date: Sat, Nov 28 2009 4:04 am
From: petertwocakes


Hi

class StringSubClass : public string {
public:
StringSubClass();
StringSubClass(const char* v) : string(v) {} // casting constructor
virtual ~StringSubClass(){};
StringSubClass& operator=(const string& str) { return
(StringSubClass&)this->assign(str); }

};

If I don't have the casting constructor, then
StringSubClass str = "abc";
fails;

If I don't have the operator=, then
StringSubClass str;
str = "abc";
fails;

But, if I have them both I get the error:
ambiguous overload for 'operator=' in 'sub = "abc"'

How can I define it such that all of the following work?

StringSubClass subStr = "abc";
subStr = "abc";
string stdStr;
StringSubClass subStr2 = stdStr;
subStr2 = stdStr;

I've tried many permutations, but at least one always fails for either
having no definition, or ambiguous overload.

Thanks

== 2 of 2 ==
Date: Sat, Nov 28 2009 4:28 am
From: "Balog Pal"


"petertwocakes" <petertwocakes@googlemail.com>
> But, if I have them both I get the error:
> ambiguous overload for 'operator=' in 'sub = "abc"'

so make another overload of = to take const char *.

==============================================================================
TOPIC: Buy Lexapro 10 mg for cash on delivery. Buy cheap Lexapro weight loss.
Order Lexapro weight gain c.o.d.. Lexapro zoloft cost.
http://groups.google.com/group/comp.lang.c++/t/4da16c2be8f397f7?hl=en
==============================================================================

== 1 of 2 ==
Date: Sat, Nov 28 2009 4:06 am
From: Buster Clubs


On Nov 22, 1:55 pm, Lipo Ret <lipo...@free-easy-recipes.com> wrote:
> BuyLexapro10 mg for cash on delivery.BuycheapLexaproweight loss.
> OrderLexaproweight gain c.o.d..Lexaprozoloft cost.
>
> LEXAPROBEST SITES FOUND!
> Just FOLLOW url below!
>
> **********************************************
>
> >>>http://trustedsitelist.com/d/LEXAPRO/<<< - CLICK HERE!
>
> **********************************************
>
> Full information about usage, dosage,Buyonline, discounts and more
> other!
>
> .
>
> .
>
> .
>
> .
>
> .
>
> .
>
> .
>
> buyLexaproweight gain overnight cheap
> saturday deliveryLexapropaxil overnight no prescription
> Somalexapronext day no prescriptionbuying Somalexaprowithout a
> scriptLexaprozoloft no rxLexapropaxil ups c.o.d.Lexaproweight gain without presciptionbuyLexaproweight gain online pharmacyLexapro10mg drug no prescription
> cash on deliveryLexapro10mgbuyLexaproweight loss online cash on deliveryLexapro10 mg online pharmacyLexapropaxil cheap cod
> watson brand Somalexapro
> no perscriptionLexapro10 mg
> cod delivery SomalexaproLexaproweight gain prescription purchase without
> cheapLexapro10mg next day
> long term use of Somalexapro
> fedex deliveryLexapro10 mgLexaproweight gain without doctor rx
> no prescriptonLexaproweight loss
> generic SomalexaprobuydiscountLexaproweight gain online
> Somalexaprono script fedex
> cod payLexapro10mgbuyLexapropaxil nowbuyLexaprozoloft online cheapbuyfree overnight pharmacyLexapro10mg
> by Somalexaproonline for codLexaprozoloft online codLexaproweight loss online without doctor prescription
> next day deliveryLexapro10 mg
> cheapLexapropaxil fedExbuycheap prescriptionLexapro10mg
> buying onlineLexaproweight gainLexaproweight gain cod pharmacyLexapropaxil without rxbuyLexaprozoloft without prescription pay cod
> codLexaprozoloft cash on deliverybuySomalexaproonline without dr approvalbuycheapLexaproweight loss cod
> online pharmacyLexapro10 mg cod
> cheapLexaprozoloft online no rx saturday delivery
> orderLexapro10mg online from mexico
> cheapLexaproweight lossbuyno online prescriptionLexaprozoloft
> next dayLexapropaxilLexaproweight gain from mexico without prescription
> cheap Somalexaproby money orderLexaproweight gain with saturday delivery
> Somalexaprono script overnight
> no rxLexapro10mg cod delivery
> cash forLexaproweight gainLexaproweight gain online no prescription fedex
> order pharmacyLexaproweight gain
> onlineLexaprozoloft fedex overnight deliveryLexapro10mg online c o d
> online pharmaceuticalLexapro10mg
> orderLexapro10mg online pharmacies cash on delivery
> no prescription codLexaproweight gainLexaproweight loss prescription onlinebuycheap discountedLexapro10 mg
> order Somalexaproonline without prescription
> cash on delivery online prescriptions Somalexapro
> cod delivery overnightLexaprozoloft
> where can ibuyLexapro10 mg no prescriptionLexaproweight gain prescriptionLexapropaxil pillbuyLexapro10 mg saturday delivery
> cod onlineLexaproweight gain
> a good website tobuyLexaprozoloftLexapropaxil pharmacy
> Somalexaprowith next day delivery
> no rx needed for purchasingLexapropaxil
> Somalexaprowithout prescription mexico
> no prior perscriptionLexapro10mg
> orderLexapropaxil no rxbuycheapLexaprozoloft without prescriptionbuyLexaprozoloft without rxLexaprozoloft on sale cheap onlineLexapro10mg no prescription worldwide
> cheapLexaprozoloft for sale with no prescription requiredbuycheap discount onlineLexaproweight loss
> usLexaprozoloft without prescription
> accepted codLexaproweight gainLexapropaxil on line cash on deliveryBuyLexapropaxil overnight shipping
> free shippingLexapropaxil
> purchase Somalexapropharmacy online
> lowest prices forLexaproweight loss onlinebuyLexapro10mg discount
> cheap orderLexapro10mg
> i want to orderLexapropaxil without a perscriptionLexapro10mg with cash on deliveryLexapro10mg c.o.d overnight deliveryLexapropaxil overdose
> how to purchase SomalexaproonlineLexapropaxil cash on delivery overnight
> orderLexapro10 mg purchase amexLexapropaxil cash delivery cod
> no prescriptionLexapro10mgbuyLexaproweight gain from online pharmacy with saturday delivery
> purchase ofLexaproweight gain online without a prescriptionLexapro10mg overseasLexapro10mg cheapest
> cheapLexapro10 mg no prescription next day deliveryLexapro10 mg overnight fed ex
> buyingLexaproweight loss overnight deliveryLexaproweight gain without prescription cash on deliverybuycheapLexaproweight gain overnight
> how to get Somalexaprowithout
> no prescription saturday deliveryLexapropaxilLexaproweight gain without prescriptionLexapro10mg online cash on deliveryLexapro10 mg online prescriptions with no membershipbuyLexaprozoloft online next day delivery
> Somalexaprono prescriptions needed codbuyLexaproweight gain and pay by codLexapropaxil and no prescription
> how to get prescription of SomalexaprobuyLexapropaxil online overseasbuySomalexaproonline no membership
> cheapestLexaproweight gain cash on delivery
> orderLexaproweight gain without rxbuyLexaproweight gain without a prescription or membershipLexapropaxil and online pharmacy
> cheapLexapro10mg free fedex shippingLexaproweight gain cod overnightLexapro10 mg free consultation fedex overnight delivery
> cheapLexaprozoloft prescriptions onlineLexapro10mg shipped by cash on deliveryLexaprozoloft generic cheapestLexaproweight gain no rx needed cod accepted
> orderLexapropaxil cod
> cheapLexapro10mg watson
> money orderLexapropaxil
> cheapLexaproweight gain next day deliveryLexaprozoloft doctor
> cod no online prescriptionLexaprozoloft
> orderLexaprozoloft online cod
> cheapLexaproweight gain cod
> online SomalexaprobuyLexapropaxil with c.o.d.
> no prescription Somalexaprowith fedexLexaproweight gain fed ex
> fedexLexaproweight gain without priscriptionLexaprozoloft overnight cod no prescriptionbuyLexaproweight gain without a perscription
> Somalexaproon line purchase
> orderLexapropaxil online no membership overnight shipping
> no scriptLexapro10 mgLexapropaxil with no prescriptionLexapropaxil cheap no rx required canada
> Somalexapronext day cash on deliveryLexapro10mg without prescription COD
> orderLexaproweight loss for over night delivery
> overnight delivery onLexaprozoloftbuydrugLexapro10 mg
> saturday deliveryLexapropaxil codLexapro10 mg without a prescription canadian
> cheapLexaproweight gain without rx
> overnight delivery of Somalexaproin us no prescription neededLexapro10 mg cod acceptedLexaprozoloft shipped overnight no prescriptionbuyLexaprozoloft prescription online
> canadaLexaprozoloft no prescriptionbuycash deliveryLexapropaxilbuyLexapro10mg no rx cheapLexaprozoloft no doctors consultbuynextdayLexapropaxil cash on deliver codLexapro10mg free saturday deliveryLexapro10mg without a perscriptionLexapropaxil saturday deliveryLexaproweight loss discountedbuyLexapro10mg online c o dbuyLexapro10mg medication cod
> discountLexapropaxilLexapro10mg COD next day
> cheapLexapropaxil without prescriptionbuycheap onlineLexapropaxil
> Somalexaprocod saturday delivery
> cheapLexaproweight gainbuyonlinebuycodLexapro10 mg
> prescriptionLexaprozoloft codLexapro10 mg codLexaprozoloft online discount cheapbuySomalexaprowithoutLexapro10 mg fedex shipping
> cheapLexaproweight gain next day shippingLexaprozoloft online fed ex
> cheap order prescriptionLexaproweight loss
> generic Somalexaprono prescription overnight
> overnightLexaprozoloft C.O.DLexapropaxil no prescriptions needed COD
> Somalexaproovernight shipping no prescription

http://www.mixpod.com/user/12482815
http://forums.adobe.com/people/Buy-lexapro-online
http://forums.adobe.com/message/2425525#2425525
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/624c53442fd387b5
http://www.justin.tv/buyviagraoraljelly/profile
http://forums.nvidia.com/index.php?showuser=244880
http://www.xbox360achievements.org/forum/member.php?u=252575
http://awesom-o.com/index.php?showuser=7800
http://www.justin.tv/bredlyc/profile
http://www.xbox360achievements.org/forum/member.php?u=254154
http://www.treemo.com/profile/Bredlyc
http://forums.adobe.com/people/Buy-viagra-oral-jelly
http://forums.adobe.com/people/Buy-kamagra-oral-jelly


== 2 of 2 ==
Date: Sat, Nov 28 2009 4:06 am
From: Buster Clubs


On Nov 22, 1:55 pm, Lipo Ret <lipo...@free-easy-recipes.com> wrote:
> BuyLexapro10 mg for cash on delivery.BuycheapLexaproweight loss.
> OrderLexaproweight gain c.o.d..Lexaprozoloft cost.
>
> LEXAPROBEST SITES FOUND!
> Just FOLLOW url below!
>
> **********************************************
>
> >>>http://trustedsitelist.com/d/LEXAPRO/<<< - CLICK HERE!
>
> **********************************************
>
> Full information about usage, dosage,Buyonline, discounts and more
> other!
>
> .
>
> .
>
> .
>
> .
>
> .
>
> .
>
> .
>
> buyLexaproweight gain overnight cheap
> saturday deliveryLexapropaxil overnight no prescription
> Somalexapronext day no prescriptionbuying Somalexaprowithout a
> scriptLexaprozoloft no rxLexapropaxil ups c.o.d.Lexaproweight gain without presciptionbuyLexaproweight gain online pharmacyLexapro10mg drug no prescription
> cash on deliveryLexapro10mgbuyLexaproweight loss online cash on deliveryLexapro10 mg online pharmacyLexapropaxil cheap cod
> watson brand Somalexapro
> no perscriptionLexapro10 mg
> cod delivery SomalexaproLexaproweight gain prescription purchase without
> cheapLexapro10mg next day
> long term use of Somalexapro
> fedex deliveryLexapro10 mgLexaproweight gain without doctor rx
> no prescriptonLexaproweight loss
> generic SomalexaprobuydiscountLexaproweight gain online
> Somalexaprono script fedex
> cod payLexapro10mgbuyLexapropaxil nowbuyLexaprozoloft online cheapbuyfree overnight pharmacyLexapro10mg
> by Somalexaproonline for codLexaprozoloft online codLexaproweight loss online without doctor prescription
> next day deliveryLexapro10 mg
> cheapLexapropaxil fedExbuycheap prescriptionLexapro10mg
> buying onlineLexaproweight gainLexaproweight gain cod pharmacyLexapropaxil without rxbuyLexaprozoloft without prescription pay cod
> codLexaprozoloft cash on deliverybuySomalexaproonline without dr approvalbuycheapLexaproweight loss cod
> online pharmacyLexapro10 mg cod
> cheapLexaprozoloft online no rx saturday delivery
> orderLexapro10mg online from mexico
> cheapLexaproweight lossbuyno online prescriptionLexaprozoloft
> next dayLexapropaxilLexaproweight gain from mexico without prescription
> cheap Somalexaproby money orderLexaproweight gain with saturday delivery
> Somalexaprono script overnight
> no rxLexapro10mg cod delivery
> cash forLexaproweight gainLexaproweight gain online no prescription fedex
> order pharmacyLexaproweight gain
> onlineLexaprozoloft fedex overnight deliveryLexapro10mg online c o d
> online pharmaceuticalLexapro10mg
> orderLexapro10mg online pharmacies cash on delivery
> no prescription codLexaproweight gainLexaproweight loss prescription onlinebuycheap discountedLexapro10 mg
> order Somalexaproonline without prescription
> cash on delivery online prescriptions Somalexapro
> cod delivery overnightLexaprozoloft
> where can ibuyLexapro10 mg no prescriptionLexaproweight gain prescriptionLexapropaxil pillbuyLexapro10 mg saturday delivery
> cod onlineLexaproweight gain
> a good website tobuyLexaprozoloftLexapropaxil pharmacy
> Somalexaprowith next day delivery
> no rx needed for purchasingLexapropaxil
> Somalexaprowithout prescription mexico
> no prior perscriptionLexapro10mg
> orderLexapropaxil no rxbuycheapLexaprozoloft without prescriptionbuyLexaprozoloft without rxLexaprozoloft on sale cheap onlineLexapro10mg no prescription worldwide
> cheapLexaprozoloft for sale with no prescription requiredbuycheap discount onlineLexaproweight loss
> usLexaprozoloft without prescription
> accepted codLexaproweight gainLexapropaxil on line cash on deliveryBuyLexapropaxil overnight shipping
> free shippingLexapropaxil
> purchase Somalexapropharmacy online
> lowest prices forLexaproweight loss onlinebuyLexapro10mg discount
> cheap orderLexapro10mg
> i want to orderLexapropaxil without a perscriptionLexapro10mg with cash on deliveryLexapro10mg c.o.d overnight deliveryLexapropaxil overdose
> how to purchase SomalexaproonlineLexapropaxil cash on delivery overnight
> orderLexapro10 mg purchase amexLexapropaxil cash delivery cod
> no prescriptionLexapro10mgbuyLexaproweight gain from online pharmacy with saturday delivery
> purchase ofLexaproweight gain online without a prescriptionLexapro10mg overseasLexapro10mg cheapest
> cheapLexapro10 mg no prescription next day deliveryLexapro10 mg overnight fed ex
> buyingLexaproweight loss overnight deliveryLexaproweight gain without prescription cash on deliverybuycheapLexaproweight gain overnight
> how to get Somalexaprowithout
> no prescription saturday deliveryLexapropaxilLexaproweight gain without prescriptionLexapro10mg online cash on deliveryLexapro10 mg online prescriptions with no membershipbuyLexaprozoloft online next day delivery
> Somalexaprono prescriptions needed codbuyLexaproweight gain and pay by codLexapropaxil and no prescription
> how to get prescription of SomalexaprobuyLexapropaxil online overseasbuySomalexaproonline no membership
> cheapestLexaproweight gain cash on delivery
> orderLexaproweight gain without rxbuyLexaproweight gain without a prescription or membershipLexapropaxil and online pharmacy
> cheapLexapro10mg free fedex shippingLexaproweight gain cod overnightLexapro10 mg free consultation fedex overnight delivery
> cheapLexaprozoloft prescriptions onlineLexapro10mg shipped by cash on deliveryLexaprozoloft generic cheapestLexaproweight gain no rx needed cod accepted
> orderLexapropaxil cod
> cheapLexapro10mg watson
> money orderLexapropaxil
> cheapLexaproweight gain next day deliveryLexaprozoloft doctor
> cod no online prescriptionLexaprozoloft
> orderLexaprozoloft online cod
> cheapLexaproweight gain cod
> online SomalexaprobuyLexapropaxil with c.o.d.
> no prescription Somalexaprowith fedexLexaproweight gain fed ex
> fedexLexaproweight gain without priscriptionLexaprozoloft overnight cod no prescriptionbuyLexaproweight gain without a perscription
> Somalexaproon line purchase
> orderLexapropaxil online no membership overnight shipping
> no scriptLexapro10 mgLexapropaxil with no prescriptionLexapropaxil cheap no rx required canada
> Somalexapronext day cash on deliveryLexapro10mg without prescription COD
> orderLexaproweight loss for over night delivery
> overnight delivery onLexaprozoloftbuydrugLexapro10 mg
> saturday deliveryLexapropaxil codLexapro10 mg without a prescription canadian
> cheapLexaproweight gain without rx
> overnight delivery of Somalexaproin us no prescription neededLexapro10 mg cod acceptedLexaprozoloft shipped overnight no prescriptionbuyLexaprozoloft prescription online
> canadaLexaprozoloft no prescriptionbuycash deliveryLexapropaxilbuyLexapro10mg no rx cheapLexaprozoloft no doctors consultbuynextdayLexapropaxil cash on deliver codLexapro10mg free saturday deliveryLexapro10mg without a perscriptionLexapropaxil saturday deliveryLexaproweight loss discountedbuyLexapro10mg online c o dbuyLexapro10mg medication cod
> discountLexapropaxilLexapro10mg COD next day
> cheapLexapropaxil without prescriptionbuycheap onlineLexapropaxil
> Somalexaprocod saturday delivery
> cheapLexaproweight gainbuyonlinebuycodLexapro10 mg
> prescriptionLexaprozoloft codLexapro10 mg codLexaprozoloft online discount cheapbuySomalexaprowithoutLexapro10 mg fedex shipping
> cheapLexaproweight gain next day shippingLexaprozoloft online fed ex
> cheap order prescriptionLexaproweight loss
> generic Somalexaprono prescription overnight
> overnightLexaprozoloft C.O.DLexapropaxil no prescriptions needed COD
> Somalexaproovernight shipping no prescription

http://www.mixpod.com/user/12482815
http://forums.adobe.com/people/Buy-lexapro-online
http://forums.adobe.com/message/2425525#2425525
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/624c53442fd387b5
http://www.justin.tv/buyviagraoraljelly/profile
http://forums.nvidia.com/index.php?showuser=244880
http://www.xbox360achievements.org/forum/member.php?u=252575
http://awesom-o.com/index.php?showuser=7800
http://www.justin.tv/bredlyc/profile
http://www.xbox360achievements.org/forum/member.php?u=254154
http://www.treemo.com/profile/Bredlyc
http://forums.adobe.com/people/Buy-viagra-oral-jelly
http://forums.adobe.com/people/Buy-kamagra-oral-jelly

==============================================================================
TOPIC: ◈▣◈▣◈▣wholesale Apple Iphone 3Gs 16gb and 32gb, Iphone 3G 8gb and 16gb,
Nokia N97 www.toptradea.com !
http://groups.google.com/group/comp.lang.c++/t/c8b17d894787609a?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 4:43 am
From: "www.toptradea.com"


◈▣◈▣◈▣wholesale Apple Iphone 3Gs 16gb and 32gb, Iphone 3G 8gb and
16gb, Nokia N97 www.toptradea.com !
"Apple [www.toptradea.com & www.toptradea.606c.com]
Nokia [www.toptradea.com & www.toptradea.606c.com]
Blackberry [www.toptradea.com & www.toptradea.606c.com]
Samsung [www.toptradea.com & www.toptradea.606c.com]
Sony Ericsson [www.toptradea.com & www.toptradea.606c.com]
HTC [www.toptradea.com & www.toptradea.606c.com]
"

==============================================================================
TOPIC: █田(⊙o⊙)田█Sneaker Nike,Jordan,Gucci,Adidas,Puma,EdhardyShox,Max,Free,
Rift sneaker and Levis,Polo,Lacoste,BBC,Gucci,Armani,LV,Christina Audigier
Tshirt and Jeans www.toptradea.com
http://groups.google.com/group/comp.lang.c++/t/cae6f901d30ad656?hl=en
==============================================================================

== 1 of 1 ==
Date: Sat, Nov 28 2009 4:55 am
From: "www.toptradea.com"


█田(⊙o⊙)田█Sneaker
Nike,Jordan,Gucci,Adidas,Puma,EdhardyShox,Max,Free,Rift sneaker and
Levis,Polo,Lacoste,BBC,Gucci,Armani,LV,Christina Audigier Tshirt and
Jeans www.toptradea.com
"Nike Air Jordan sneaker www.toptradea.com
Air-Jordan-J1 sneaker www.toptradea.com

Air-Jordan-J3 sneaker www.toptradea.com

Air Jordan J4 sneaker www.toptradea.com

Air Jordan J5 sneaker www.toptradea.com

Air Jordan J6 sneaker www.toptradea.com

Air Jordan J7 sneaker www.toptradea.com

Air Jordan J8 sneaker www.toptradea.com

Air Jordan J9 sneaker www.toptradea.com

Air Jordan J10 sneaker www.toptradea.com

Air Jordan 11 sneaker www.toptradea.com

Air Jordan J12 sneaker www.toptradea.com

Air Jordan J13 sneaker www.toptradea.com

Air Jordan J14 sneaker www.toptradea.com

Air Jordan J16 sneaker www.toptradea.com

Air Jordan J17 sneaker www.toptradea.com

Air Jordan J18 sneaker www.toptradea.com

Air Jordan J19 sneaker www.toptradea.com

Air Jordan J23 sneaker www.toptradea.com

Air Jordan J24 sneaker www.toptradea.com

Air Jordan J25 sneaker www.toptradea.com
Jordan True Flight sneaker www.toptradea.com

+Air Jordan Fusion sneaker www.toptradea.com
Air Jordan mix1257 sneaker www.toptradea.com

Air Jordan fly 45 sneaker www.toptradea.com

Air Jordan Anthony M sneaker www.toptradea.com

Air Jordan J1+AF1 sneaker www.toptradea.com

Air Jordan J1 23 sneaker www.toptradea.com

Air Jordan mix6 sneaker www.toptradea.com

Air Jordan mix sneaker www.toptradea.com

Air Jordan Mix9 sneaker www.toptradea.com

Air Jordan mix3 sneaker www.toptradea.com

Air Jordan J5 mixman sneaker www.toptradea.com

Air Jordan 6+AF1 sneaker www.toptradea.com

Air Jordan J11 mix6 sneaker www.toptradea.com

Air Jordan J11 23woman sneaker www.toptradea.com

Air Jordan J11 Obama sneaker www.toptradea.com

Air Jordan J11 Antho sneaker www.toptradea.com

Air Jordan J12mix sneaker www.toptradea.com

Air Jordan J13+16 sneaker www.toptradea.com

Jordan J13+AF1 new sneaker www.toptradea.com

Air Jordan J20AF1 sneaker www.toptradea.com

Air Jordan J23 mix sneaker www.toptradea.com
"
"Nike Air Max sneaker www.toptradea.com
Air Max 91 sneaker www.toptradea.com

Nike-ID sneaker www.toptradea.com

Air Max 87 sneaker www.toptradea.com

Air-Max-2003 sneaker www.toptradea.com

Air max 5 sneaker www.toptradea.com

Air-Max-Tailwind-09 sneaker www.toptradea.com

Air-Max-new-180 sneaker www.toptradea.com

Air-Max-LTD sneaker www.toptradea.com

Air-Max-2006 sneaker www.toptradea.com

Air Max 97 sneaker www.toptradea.com

Air Max 92 sneaker www.toptradea.com

Air Max 90 sneaker www.toptradea.com

Air-Max-Yeezy sneaker www.toptradea.com

Air Max 09 sneaker www.toptradea.com

Air-Max-TN sneaker www.toptradea.com

Air Jordan LTD2 sneaker www.toptradea.com

Air-Max-Skyline sneaker www.toptradea.com

Air-Max-miniBMW sneaker www.toptradea.com

Air-Max-2009 sneaker www.toptradea.com

Air-Max180 sneaker www.toptradea.com

Air Max 95 sneaker www.toptradea.com

+Nike Shox sneaker www.toptradea.com
Nike-shox-TR sneaker www.toptradea.com

Nike-shox-TL3 sneaker www.toptradea.com

Nike-shox-R3 sneaker www.toptradea.com
Nike-air-Plata sneaker www.toptradea.com

Nike-shox-new sneaker www.toptradea.com

Nike-shox-87 sneaker www.toptradea.com

Nike-shox-97 sneaker www.toptradea.com

Nike-shox-NZ sneaker www.toptradea.com

Nike-shox-R5 sneaker www.toptradea.com

Nike-shox-R4 sneaker www.toptradea.com

Nike-shox-TL1 sneaker www.toptradea.com

Nike-shox-OZ sneaker www.toptradea.com

Nike-shox-TZ sneaker www.toptradea.com

Nike-shox-torch sneaker www.toptradea.com

+Air Force 1 sneaker www.toptradea.com
Air-Force-1 sneaker www.toptradea.com

AF1-low-shoes sneaker www.toptradea.com

AF1-Supreme-TZ-man sneaker www.toptradea.com

+Nike Rift sneaker www.toptradea.com
Nike-Air-zenyth sneaker www.toptradea.com
Nike-Rift sneaker www.toptradea.com
"
"Asics causal shoes www.toptradea.com ,
Creative Recreation causal shoes www.toptradea.com ,
Coogi causal shoes www.toptradea.com ,
Clarks causal shoes www.toptradea.com ,
Dkny causal shoes www.toptradea.com ,
Hogan causal shoes www.toptradea.com ,
Supra causal shoes www.toptradea.com ,
DG causal shoes www.toptradea.com ,
Edhardy causal shoes www.toptradea.com ,
Lacoste causal shoes www.toptradea.com ,
Puma causal shoes www.toptradea.com ,
Coach causal shoes www.toptradea.com "


==============================================================================

You received this message because you are subscribed to the Google Groups "comp.lang.c++"
group.

To post to this group, visit http://groups.google.com/group/comp.lang.c++?hl=en

To unsubscribe from this group, send email to comp.lang.c+++unsubscribe@googlegroups.com

To change the way you get mail from this group, visit:
http://groups.google.com/group/comp.lang.c++/subscribe?hl=en

To report abuse, send email explaining the problem to abuse@googlegroups.com

==============================================================================
Google Groups: http://groups.google.com/?hl=en

No comments: