Tuesday, January 13, 2015

Digest for comp.lang.c++@googlegroups.com - 25 updates in 7 topics

Jorgen Grahn <grahn+nntp@snipabacken.se>: Jan 05 07:32PM

On Mon, 2015-01-05, Scott Lurndal wrote:
> legalize+jeeves@mail.xmission.com (Richard) writes:
>>slp53@pacbell.net spake the secret code
>><iWxqw.1082954$Rp.81761@fx23.iad> thusly:
...
 
>>you have chosen to stick with a C++98 compiler. I know people who
 
> No, my "boss" requires that I stick with a C++98 compiler. Qualification
> of a new compiler is expensive, in terms of man-hours for both testing
 
Do you really perform independent testing of compilers that everyone
else has been using for years? If you mean testing for defects in
your own code being triggered by the new compiler, aren't you
performing testing for other reasons (like actual code changes) and
wouldn't those tests be likely to catch those defects?
 
/Jorgen
 
--
// Jorgen Grahn <grahn@ Oo o. . .
\X/ snipabacken.se> O o .
Luca Risolia <luca.risolia@linux-projects.org>: Jan 05 07:41PM +0100

On 05/01/2015 17:22, Joseph Hesse wrote:
> }
 
> In the above, x is clearly an int && and that is what the function
> promises to return.
 
No, in short, the expression "x" refers to an lvalue, after x has been
initialized. There are valid reasons why this happens. If you are
interested, there should be some more detailed explanations at the
Stroustrup's web page:
 
http://www.stroustrup.com/C++11FAQ.html
Ian Collins <ian-news@hotmail.com>: Jan 05 09:41AM +1300

Yippee wrote:
 
> so std:: in the headers and maybe
 
> using std::cout;
 
> int the cpp?
 
That's a fair approach.
 
--
Ian Collins
alessio211734 <alessio211734@yahoo.it>: Jan 12 06:30AM -0800

Hello,
 
I would like create a static member in my class as a c style vector.
 
class MyClass
{
 
...
static NearData nearCells[32];
 
};
 
 
 
I don't know how declare in .cpp file the static vector.
I would that when I have two instance of MyClass m1,m2 and
when I do m1=m2 the NearData avoid to be copied.
 
MyClass m1;
MyClass m2;
 
m1=m2;
Victor Bazarov <v.bazarov@comcast.invalid>: Jan 12 10:12AM -0500

On 1/12/2015 9:30 AM, alessio211734 wrote:
> I would like create a static member in my class as a c style vector.
 
I think there is no such thing as "a c style vector". I believe the
term is "an array", and it's the same in both C and C++.
 
> static NearData nearCells[32];
 
> };
 
> I don't know how declare in .cpp file the static vector.
 
NearData MyClass::nearCells[32];
 
(assuming that 'NearData' is available to the compiler here).
 
> I would that when I have two instance of MyClass m1,m2 and
> when I do m1=m2 the NearData avoid to be copied.
 
Yes, any static data members stay put when instances are copied (either
by construction or assignment).
 
 
> MyClass m1;
> MyClass m2;
 
> m1=m2;
 
V
--
I do not respond to top-posted replies, please don't ask
jak <please@nospam.tnx>: Jan 12 04:35PM +0100

Il 12/01/2015 15:30, alessio211734 ha scritto:
 
> MyClass m1;
> MyClass m2;
 
> m1=m2;
 
class myVect
{
public:
char vector[50];
myVect operator=(myVect v)
{
memcpy(vector, v.vector, sizeof(vector));
return *this;
}
};
 
void f()
{
myVect m1, m2;
strcpy_s(m2.vector, "Alessio");
m1 = m2;
cout << m1.vector << endl;
system("pause");
return;
}
 
---
Questa e-mail è stata controllata per individuare virus con Avast antivirus.
http://www.avast.com
Louis Krupp <lkrupp@nospam.pssw.com.invalid>: Jan 12 09:01AM -0700

On Mon, 12 Jan 2015 06:30:14 -0800 (PST), alessio211734
 
>MyClass m1;
>MyClass m2;
 
>m1=m2;
 
If I understand correctly, you've *declared* nearCells in your header
file, and you'll want to *define* it in the .cpp file that implements
MyClass:
 
NearData MyClass::nearCells[32];
 
This might help:
 
http://www.bogotobogo.com/cplusplus/statics.php
 
Louis
legalize+jeeves@mail.xmission.com (Richard): Jan 12 05:09PM

[Please do not mail me a copy of your followup]
 
jak <please@nospam.tnx> spake the secret code
 
> memcpy(vector, v.vector, sizeof(vector));
> strcpy_s(m2.vector, "Alessio");
 
Please stop writing C code and calling it C++.
--
"The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
The Computer Graphics Museum <http://computergraphicsmuseum.org>
The Terminals Wiki <http://terminals.classiccmp.org>
Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
legalize+jeeves@mail.xmission.com (Richard): Jan 12 05:10PM

[Please do not mail me a copy of your followup]
 
Louis Krupp <lkrupp@nospam.pssw.com.invalid> spake the secret code
 
>NearData MyClass::nearCells[32];
 
>This might help:
 
>http://www.bogotobogo.com/cplusplus/statics.php
 
This too: <http://en.cppreference.com/w/cpp/language/static>
--
"The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
The Computer Graphics Museum <http://computergraphicsmuseum.org>
The Terminals Wiki <http://terminals.classiccmp.org>
Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
Melzzzzz <mel@zzzzz.com>: Jan 12 09:16PM +0100

On Mon, 12 Jan 2015 17:09:43 +0000 (UTC)
 
> > memcpy(vector, v.vector, sizeof(vector));
> > strcpy_s(m2.vector, "Alessio");
 
> Please stop writing C code and calling it C++.
 
This is not C++ code?
Vir Campestris <vir.campestris@invalid.invalid>: Jan 12 09:41PM

On 12/01/2015 20:16, Melzzzzz wrote:
>>> strcpy_s(m2.vector, "Alessio");
 
>> Please stop writing C code and calling it C++.
 
> This is not C++ code?
 
It is. But... only really because C++ is largely a superset of C. It's
obsolete and dangerous. (for example, because there's no check that
m2.vector is big enough to hold "Alessio")
 
Andy
Chris Vine <chris@cvine--nospam--.freeserve.co.uk>: Jan 13 12:48AM

On Mon, 12 Jan 2015 21:41:50 +0000
 
> It is. But... only really because C++ is largely a superset of C.
> It's obsolete and dangerous. (for example, because there's no check
> that m2.vector is big enough to hold "Alessio")
 
Because the string is a literal and the size of the array is a compile
time constant larger than the size of the literal, then it must be big
enough. It is still unpleasant code though.
 
Another objection might be that:
 
a) The "answer" doesn't actually meet the OP's original question,
which was about static members;
 
b) The proposed assignment operator of myVect is completely redundant,
since a non-static array member of a class is by rule required to be
copied element by element by the default assignment operator (it does
not decay to a pointer copy as seems to have been assumed).
 
Chris
jak <please@nospam.tnx>: Jan 13 11:37AM +0100

Il 12/01/2015 18:09, Richard ha scritto:
 
>> memcpy(vector, v.vector, sizeof(vector));
>> strcpy_s(m2.vector, "Alessio");
 
> Please stop writing C code and calling it C++.
 
class myVect
{
public:
static char s_vector[50];
char us_vector[50];
static bool trunc;
 
myVect operator=(char s[])
{
trunc = (((string)s).length() + 1 > sizeof s_vector) ? false : true;
 
for (int i = 0; i < sizeof s_vector; i++)
s_vector[i] = us_vector[i] = s[i];
 
return *this;
}
};
char myVect::s_vector[50];
bool myVect::trunc;
 
void f(void)
{
static myVect m1, m2;
m1 = "Mickey Mouse";
m2 = "Donald Duck";
cout << "s: " << m1.s_vector << " us: " << m1.us_vector << endl;
m1 = m2;
cout << "s: " << m1.s_vector << " us: " << m1.us_vector << endl;
system("pause");
return;
}
jak <please@nospam.tnx>: Jan 13 12:24PM +0100

Il 12/01/2015 21:16, Melzzzzz ha scritto:
>>> strcpy_s(m2.vector, "Alessio");
 
>> Please stop writing C code and calling it C++.
 
> This is not C++ code?
 
A C compiler does not compile those lines of code while a C++ compiler
can. He tells lies. He probably wanted to say that he does not like that
way of writing code because it is too similar to the C code and if he
does not accept that the true power of C++ is C, then he can leave the
C++ and choose for him any other OOP language.
Daniel <danielaparker@gmail.com>: Jan 12 07:41AM -0800

Consider a third party container that has a template allocator parameter, defaulting to std::allocator<void>, and rebinds it as needed when allocating fixed size internal data structures.
 
Now suppose the user of this container decides to apply, for instance, a boost pool_allocator, say as
 
Container<boost::pool_allocator<void>> val;
 
and proceeds to add many and diverse items into the container.
 
At some point, the user is done with the container and wishes to free the memory in the pool, but in the case of the boost pool allocator, that requires the user to know about the internal data structures in the container, along the lines of
 
boost::singleton_pool<boost::pool_allocator_tag, sizeof(Container::internal_structure1)>::release_memory();
 
Any suggestions for best practices on the part of the container author for making this convenient for the user?
 
Thanks,
Daniel
"Öö Tiib" <ootiib@hot.ee>: Jan 12 08:47AM -0800

On Monday, 12 January 2015 17:42:04 UTC+2, Daniel wrote:
> std::allocator<void>, and rebinds it as needed when allocating fixed size internal data
> structures.
 
> Now suppose the user of this container decides to apply, for instance, a boost pool_allocator,
 
Juha Nieminen posted that the particular pool_allocator had terrible performance
in his tests couple of years ago.
https://groups.google.com/forum/#!msg/comp.lang.c++/7HWbMzsMCyc/wDd1tIRj_f0J
 
I simply avoid using it and works great for me. ;)
 
> say as
 
> Container<boost::pool_allocator<void>> val;
 
> and proceeds to add many and diverse items into the container.
 
Notice that it was design decision of *user* of the 'Container' to use some custom (or third
party library) allocator with 'Container'.
 
> sizeof(Container::internal_structure1)>::release_memory();
 
> Any suggestions for best practices on the part of the container author for making this
> convenient for the user?
 
If the user does not know some properties of 'Container' but may need those for something
(like 'sizeof(Container::internal_structure1)') then 'Container's author can provide those
with some 'public static constexpr size_t' in interface of 'Container'.
Daniel <danielaparker@gmail.com>: Jan 12 05:40PM -0800

On Monday, January 12, 2015 at 11:47:37 AM UTC-5, Öö Tiib wrote:
> (like 'sizeof(Container::internal_structure1)') then 'Container's author can
> provide those
> with some 'public static constexpr size_t' in interface of 'Container'.
 
Thanks, it's a good suggestion, but unfortunately the compilers I need to support
include ones that don't have constexpr.
 
Daniel
"Öö Tiib" <ootiib@hot.ee>: Jan 12 07:42PM -0800

On Tuesday, January 13, 2015 at 3:40:50 AM UTC+2, Daniel wrote:
> > with some 'public static constexpr size_t' in interface of 'Container'.
 
> Thanks, it's a good suggestion, but unfortunately the compilers I need
> to support include ones that don't have constexpr.
 
Oh ... no problem. 'const' works like 'constexpr' for static integral
members. 'constexpr' just makes the intent more clear.
 
template<class X, size_t N>
class Container
{
X[N] stuff;
public:
static size_t const StuffSize = sizeof(stuff);
};
 
typedef Container<int, 5> FiveInts;
typedef Container<char, FiveInts::StuffSize> TwentyChars;
"Öö Tiib" <ootiib@hot.ee>: Jan 12 10:20PM -0800

On Tuesday, January 13, 2015 at 5:43:05 AM UTC+2, Öö Tiib wrote:
> };
 
> typedef Container<int, 5> FiveInts;
> typedef Container<char, FiveInts::StuffSize> TwentyChars;
 
Fix to 'X stuff[N];', strange typo.
Jorgen Grahn <grahn+nntp@snipabacken.se>: Jan 11 10:49AM

On Sat, 2015-01-10, Stefan Ram wrote:
 
> But then, I have sometimes encountered questions in the
> newsgroup, where someone asks how to write a parser for some
> input, but fails to specify the exact rules for the input.
 
Hm, that happens almost weekily, in my experience.
 
...
> At some point in his education, a programmer must learn how
> to write a grammar and a parser, but it does not have to be
> at during the first year.
 
I think it should come early. For me, the idea that you can look at
(textual) data as an instance of a language, that was a very powerful
insight which I still rely on heavily, 25 years later.
 
Disclaimer: I do a lot of Unix work. Perhaps it's less useful in a
less text-oriented environmant.
 
/Jorgen
 
--
// Jorgen Grahn <grahn@ Oo o. . .
\X/ snipabacken.se> O o .
legalize+jeeves@mail.xmission.com (Richard): Jan 12 05:01PM

[Please do not mail me a copy of your followup]
 
ram@zedat.fu-berlin.de (Stefan Ram) spake the secret code
 
> But then, I have sometimes encountered questions in the
> newsgroup, where someone asks how to write a parser for some
> input, but fails to specify the exact rules for the input.
 
I recently gave a presentation to the Utah C++ Programmers meetup on
how to do text parsers using Boost.Spirit. I have a github repository
with two sample parsers: JSON and e-mail date/time (which has some
crazy rules).
 
<https://github.com/LegalizeAdulthood/ucpp-json-parser>
<https://github.com/LegalizeAdulthood/ucpp-date-time-parser>
 
You can browse the individual commits to see how the parsers were
incrementally built up using test-driven development.
--
"The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
The Computer Graphics Museum <http://computergraphicsmuseum.org>
The Terminals Wiki <http://terminals.classiccmp.org>
Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
legalize+jeeves@mail.xmission.com (Richard): Jan 12 05:07PM

[Please do not mail me a copy of your followup]
 
Jorgen Grahn <grahn+nntp@snipabacken.se> spake the secret code
 
>Disclaimer: I do a lot of Unix work. Perhaps it's less useful in a
>less text-oriented environmant.
 
Oh, it's just as handy there because lots of data is interchanged as
text and you need to parse the text.
 
Windows/Mac is just as much a text-oriented environment as Unix, it
just has a GUI sitting on top.
 
If you think Windows doesn't have a decent shell, you should know that
most shell stuff these days is done in Windows PowerShell and not the
DOS prompt. <http://en.wikipedia.org/wiki/Windows_PowerShell>
 
Also, Windows has had the ability out-of-the-box to write scripts in
JavaScript with Windows Script Host for at least 10 years (probably
more like 15). The sysadmin guys are the only ones who seem to know
about it, as they've been using it (and later PowerShell) to automate
sysadmin tasks. However, it's still damn handy to have it available as
a developer so that you can give scripts to Windows users who won't have
something like cygwin or nodejs installed.
--
"The Direct3D Graphics Pipeline" free book <http://tinyurl.com/d3d-pipeline>
The Computer Graphics Museum <http://computergraphicsmuseum.org>
The Terminals Wiki <http://terminals.classiccmp.org>
Legalize Adulthood! (my blog) <http://legalizeadulthood.wordpress.com>
BV BV <bv8bv8bv8@gmail.com>: Jan 11 12:25PM -0800

Muhammad (saws): A Role Model for a New Millennium
 
 
The human need for role models
 
Have you ever heard of Moses, Jesus, Confucius, Krishna or the Buddha? How about Gandhi, Mother Theresa or Martin Luther King? If you live in the West, there's a good chance that you know a bit about these people and their accomplishments. In man's eternal search for immortality and meaning, many leaders and heroes, both true and false, have made their appearance on the world stage. The respect and reverence shown to such figures among people of every nationality, in every age, points to a deep human need to believe in someone greater than oneself, in an attempt to transcend the confines of one's own limited existence. We see this theme recur in world myths, legends, hero stories, and in the idealisation of people who have been raised by their followers to superhuman or godly status.

Most educated people today are sceptics,
 
and view such stories as the charming remnants of a simpler age. And with globalisation and the steady stream of new religions and ideologies that people are exposed to, it may be hard to know what to believe. Some find it easier to ignore spiritual questions altogether, focusing instead on their relationships, careers and 'getting ahead'. Yet we know that excessive materialism stifles the mind and spirit; despite technological advances, the deep yearning to believe in a Higher Power, true leadership, and an ultimate purpose in life remains. In this day and age, who can be trusted as a guide in both spiritual and worldly matters?

There is one leader,
 
still largely unknown to the West, who is an extraordinary role model that people of all backgrounds can relate to: the Prophet Muhammad. The details of Muhammad's remarkable life have been carefully preserved and have been subjected to the scrutiny of historians, east and west. In contrast to others who have achieved renown for their accomplishments in a limited sphere of activity, Muhammad's achievements span all major areas of life. The historian Michael H. Hart wrote:
My choice of Muhammad to lead the list of the world's most influential persons may surprise some readers and be questioned by others, but he was the only man in history who was supremely successful on both the religious and secular levels. Hart, Michael, The 100: A Ranking of the Most Influential Persons in History.

Why does the average European or American

know so little about a man whose life was so exceptional? Irrational fears and negative propaganda, dating back to the Crusades and exaggerated by the media, have created a 'mental block' for many people against all things Arab or Islamic, and the two terms are often mistakenly confused. As we enter the age of the global village, is it not time for those who pride themselves on being unprejudiced, independent thinkers to put aside these mental relics from a bygone era? We invite you to take a few minutes to explore a new understanding of religious leadership, and in so doing, to catch a glimpse of a man who is loved by one-fifth of the people on this planet.

The concept of Prophethood in Islam
 
For a Muslim, a Prophet does not primarily imply someone able to foretell the future - although most of Muhammad's predictions have already been fulfilled in astonishing ways - but a man sent by God to call people to repent, have faith, and dedicate their lives to doing good, thereby helping them rediscover the purpose for which they were created. Prophets are not considered to be Divine, and are not prayed to or worshipped - though they were men of outstanding character and spirituality who were protected from committing sins, performed miracles, received revelation and communed with God. Islam teaches that God is One, without partner or associate; no human being can share in any of the qualities that are unique to the Intelligent Creator and Sustainer of our vast and complex universe. Muhammad was no more than God's honoured servant and Messenger, yet he embodied the best of human potential, and that is what continues to make him so appealing and accessible today. Last in a line of Prophets and Messengers sent by God to all people on earth - including Noah, Abraham, Moses and Jesus - who effected the large-scale transformation of individuals and society, Muhammad was unsurpassed as teacher and guide. Speaking of his own role as the last true Prophet before Judgement Day, he said:
'The parable of me in relation to the Prophets who came before me is that of a man who built a house beautifully and well, except that one brick in its corner was missing. The people went around it and wondered at its beauty, but said: "If only that brick were put in its place!" I am that brick, and I am the last of the Prophets.'

Muhammad's personal life

Muhammad was born in 570 AD to a noble family of Makkah, and was a descendant of the Prophet Abraham. Orphaned at six, Muhammad was a thoughtful youth who worked as a shepherd and helped his uncle with the trade caravans. As a teenager he rejected the immoral customs of his people, who had become steeped in idolatry, and joined a chivalrous order, earning the nickname 'The Trustworthy'. At age 25 he found employment with a wealthy widow of 40 named Khadijah, managing her business. Impressed by his honesty and character, Khadijah proposed marriage and he accepted. Despite their age difference, they were happily married for 25 years, and were blessed with six children. After Khadijah's death Muhammad married several women for political and humanitarian reasons, as was expected of a man of his position; all but one were widows and divorcees. He was a loving and considerate husband and father, and his family was devoted to him despite his voluntary poverty, for he put into practice his own advice, 'the best of you is the one who is best to his own family.'

Muhammad, the Prophet

Muhammad received his first revelation from God at 40, through the Angel Gabriel. He continued to receive revelations for 23 years, on topics ranging from the Oneness of God and His wondrous handiwork, to stories of earlier prophets, morality and ethics, and life after death. These revelations became collectively known as the Qur'an, and are considered by Muslims to be the literal word of God; the Prophet's own words were collected separately. Muhammad's call to monotheism and social reform was heavily opposed by the Makkan elite; after enduring thirteen years of intense persecution, he and his followers were invited to relocate to Madinah, a town to the north that had been torn apart by generations of intertribal warfare. Muhammad successfully settled their differences and forged a bond of brotherhood between the two warring factions, as well as between the locals and the new emigrants. For Arab tribal society, this was an amazing accomplishment. The early Muslims learned to implement the golden rule under the Prophet's tutelage: 'No one truly believes until he desires for his brother what he desires for himself.'

Muhammad's legacy: the Madinan model

For Muhammad, religion was not a matter of personal conviction alone but a complete way of life, and Madinah flourished under his leadership. The Madinan model of government, based on justice, respect for human dignity and God-consciousness, became the template to which Muslims have looked for guidance and inspiration ever since. The Prophet drew up the world's first constitution in which the rights of religious minorities were protected, and entered into treaties and alliances with neighbouring tribes. He sent letters to the rulers of the Persians, Egyptians, Abyssinians and Byzantines, announcing his message of pure monotheism and inviting them to accept Islam. For the first time in history, women, children, orphans, foreigners and slaves were granted extensive rights and protection. Many of the Prophet's concerns seem surprisingly 'modern': he condemned racism and nationalism, saying 'there is no superiority of an Arab over a non-Arab, or a white man over a black man, except in righteousness.' He established laws protecting animals, trees and the environment. He encouraged free trade and ethical investments, but secured workers' rights and forbade usury. He worked for peace, but defined the parameters of the judicious use of force, when force was needed. He convinced people to give up alcohol, drugs, prostitution and crime, and promoted healthy living. He condemned domestic violence, encouraged his wives to speak their own mind, and granted Muslim women many rights not dreamed of in Europe until centuries later, including the right to own property, reject arranged marriages, and seek divorce because of incompatibility. And the Prophet encouraged his followers to seek beneficial knowledge wherever it could be found, with the result that Muslims never experienced a conflict between science and religion, and led the world in many fields of learning for centuries afterwards. Although his enduring legacy can be observed in everything from art to politics, Muhammad's greatest achievement by far was to re-establish pure monotheism. As simple and straightforward to understand as the nucleus at the centre of an atom, the concept of One God lies at the heart of Islamic culture. Muslims turn to their Creator for guidance, without the need for intermediaries, or the loss of dignity that idolatry and superstition bring.
The Prophet accomplished all this through the strength of his character and personal example; he inspired in his followers a love, devotion and sense of awe that was unparalleled. While other men would have been corrupted by the absolute power that he wielded in his later years, Muhammad remained humble, ever aware of the Source of his blessings. 'I am just God's servant,' he said, and 'I have only been sent as a teacher.' Although he spent his days in serving people and his nights in prayer, he preached religious moderation and balance; he forbade his followers to adopt a monastic lifestyle and preferred that they establish strong families and engage themselves in bettering the world around them, while remaining deeply conscious of God.
In the brief space of one generation and during his own lifetime, the Prophet Muhammad* successfully transformed the faith, mentality and culture of the people of Arabia; within 100 years his message had touched the hearts and lives of millions in Africa, Asia and parts of Europe. The Prophet foretold that each succeeding generation would be worse than the one before it, and true to his prediction, Muslims have not always understood or honoured his example. But Muhammad's teachings, speeches and customs were carefully noted down by his Companions, and compiled into books of authentic sayings which are available in translation. Along with the Qur'an, they form the holistic foundation of a satisfying way of life for practising Muslims, while for others, they provide a fascinating glimpse into the heart and mind of an exceptional man and role model from whom much can be learned.
 
http://www.islamhouse.com/401719/en/en/articles/Muhammad_Peace_be_Upon_Him:_A_Role_Model_for_a_New_Millennium
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Jan 11 08:42PM

On 11/01/2015 20:25, BV BV wrote:
> Muhammad (saws): A Role Model for a New Millennium
 
[snip]
 
The evidence for Evolution is proof that the Abrahamic god doesn't exist
rendering Judaism, Christianity and Islam complete and utter tosh.
 
/Flibble
 
P.S. Sausages.
jacob navia <jacob@spamsink.net>: Jan 12 12:14AM +0100

Le 11/01/2015 21:42, Mr Flibble a écrit :
> rendering Judaism, Christianity and Islam complete and utter tosh.
 
> /Flibble
 
> P.S. Sausages.
Well, it is not necessary to go that far. Mr Fibble's existence proves
that god doesn't exist since if he would exist why would he have done Mr
Fibble?
 
Why does god make atheists?
 
And anyway even if he made us, Mr Fibble, me, and millions other
atheists we are here to do what he created us for:
 
god DOESN't EXIST!
 
:-)
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com.

No comments: