Stefan Ram wrote:
Bill <bill_nos...@whoknows.net> writes:
Stefan Ram wrote:
bartc <b...@freeuk.com> writes:
On 20/09/2017 02:31, Bill wrote:
it's implementation, I would say that C++ has it all over Python from
the point of view of "intuitiveness".  It's much easier to tell what's
going on, at a glance, in a C++ program.
You're being serious, aren't you?
For one example, this is a part of a C++ program:
template< typename C >C T( void ( C::* )() );
. It defines a template T, that can be used in a
class as follows:
struct example { void f(); typedef decltype( T( &f )) S; };
. The type »S« now has a certain property, that can
be useful sometimes. What is this property (asking Bill)?        As
has already been pointed out, one can write "obfuscating code" in any
language, with little effort.  I strive to write code which is easily
understandable--and I document it. I don't wish to debate whether I
could make more of a mess in Python, or not.
   From the point of view of a C++ programmer, the above
   is not obfuscated, but it is readable and simple C++.
   It is of course not readable for readers who do not know
   C++. Just as Python's »string[::-1]« appears "obfuscated"
   to readers who don't know Python.

   It was the answer to the question "How can I express the
   class I'm in in, when I can't write that classes name
   literally?

I would try to use virtual cast in place of the *&%, I mean code, you wrote. "Clever code" is a losing game--just look at your explanation below. Simple==Good.


So, »S« is »example«.

   It works like this: The type of »&f« is »void ( example::*
   )()«. So, the function-declaration template »T« infers »C«
   to be »example«, and the type of »T( &f )« is »example«,
   which then is transferred to the name »S« using typedef.

   This is obvious for C++ programmers, but it takes a lot
   of time to become a C++ programmer, maybe more than it
   takes to become a Python programmer.


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to