'''[http://www.open-std.org/jtc1/sc22/wg21/%|%C++]''', by [http://www.stroustrup.com/%|%Bjarne Stroustrup], is a general-purpose [programming language] wih a bias towards systems programming. ** Quips ** ''C++ is "the tool of the angels: only in heaven you have infinite amount of time to devote to design analysis (and to wait for the compiler to finish).'': Marco Maggi ''C++ doesn't just provide you with enough rope to hang yourself. It also provides a do-it-yourself scaffold (with instructions translated from Klingon by Papuan tribesmen). ... Experts can do very cool stuff with C++. Utter dummies can do cool stuff with C++. But everyone else is in trouble...'': - [dkf], [Tcl Chatroom] ** See Also ** [Critcl does C++]: [Invoking C commands from C++]: [Invoking Tcl commands from C++]: [Cplusplus streams and Tcl channels]: [Anjuta]: [Ara]: [Artefact]: [AutoDOC]: [AutoDOC (Reiberg)]: [BED]: [boob]: [BSVC]: [C++/Tk]: [C-Forge IDE]: [Cade]: [CC2Itcl]: [CmdLine]: [cpp2itcl]: [cpptcl]: [Deet]: [DGC Tools]: [EvoX]: [Exuberant Ctags]: [FriGUI]: [g2 preprocessor]: [GAGS]: [GOOD]: [Highlight]: [J]: [JX Development Suite]: [MyrmecoX]: [Nebula Device]: [NSCL SpecTcl]: [Objectify]: [OBST]: [OMNeT++]: [plplot]: [prettyp]: [Ptolemy]: [robodoc]: [S-CASE]: [Sdoc]: [SLOCCount]: [SNACC]: [Source Navigator]: [SQL Relay]: [State Map Compiler (SMC)]: [Swig]: [Test Environment Toolkit]: [http://www.7bsoftware.com/software/tlist.cpp%|%tlist], by [Mark Smith]: A "C++ class for a Tcl list ... [[which]] makes it easy to use Tcl lists within a C++ program." [Tsert Integrated Test Environment]: [VAD (Visual Ada Developer)]: [Webcpp]: ** Reference ** [https://openassist.googlecode.com/files/C%2B%2B%20Standard%20-%20ANSI%20ISO%20IEC%2014882%202003.pdf%|%ISO/IEC 14882], Second Edition, 2003: [http://www.fpx.de/fp/Software/tcl-c++/%|%Making C++ Loadable Modules Work]: A helpful guide to problems that can arise when writing Tcl extensions in C++. Written in 1998, so its documentation on the limitations of some compilers may be out of date. [http://www.stroustrup.com/oopsla.pdf%|%Why C++ is not just an Object-Oriented Programming Language], Bjarne Stroustrup: C++ directly supports a variety of programming styles. In this, C++ deliberately differs from languages designed to support a single way of writing programs. [http://yosefk.com/c++fqa/templates.html#fqa-35.11%|%So templates are overloading, right?]: The insanity that is modern (templatized) C++: ** Guides ** [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3092.pdf%|%IOS/IEC 14882, Final Committe Draft]: A freely-available draft of the final specification. The official specification [http://webstore.ansi.org/RecordDetail.aspx?sku=INCITS%2FISO%2FIEC+14882-2012%|%is available from] [ANSI] for $60, ] ** Resources ** [http://www.stroustrup.com/%|%Bjarne Stroustrup's homepage]: [http://www.open-std.org/jtc1/sc22/wg21/%|%JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP]: The ISO/IEC working group that continues to evolve C++. [http://www.drdobbs.com/cpp%|%C++], [http://www.drdobbs.com/%|%Dr.Dobb's]: ** Tools ** [http://home.mweb.co.za/sd/sdonovan/underc.html%|%underC]: An interesting lightweight C++ interpreter. The author [http://home.mweb.co.za/sd/sdonovan/faq.htm%|%implies] that it should be easy to interact with [Tcl]/[Tk] from it. ** Description ** '''[ISO]/IEC 14882:2011''', or '''C++ 11', is the latest published standard specification of C++. The update specification includes: * Move semantics * Smart, shared pointers * Hash tables * Regular expressions ---- [DKF]: Tcl is not written in C++, but rather in [C]. This is not about to change, as it remains relatively difficult to do extremely portable [ABI%|%ABIs] in C++ due to the exact details of how compilers convert source code into object code; the tendency with C++ is to spread implementation details across class boundaries at the ABI level, which is a bit faster but also ''far'' more entangling. As such, Tcl sticks with C (and in fact a very codified and restricted type of C at that); in engineering terms, we're very conservative. What we would like to be able to do, but can't at the moment, is unequivocally recommend a library for people who ''do'' want to mix modern Tcl and modern C++… ---- [willdye] If you're searching for references to C++, then you might want to also search for strings such as "cpp" or "cplusplus". The "++" characters are problematic in certain situations, so the name "C++" has many synonyms. ---- [AMG]: Aside from interoperability with already-existing C++ packages, what compelling applications (uses) for the C++ language are there? It seems to me that most of C++ seems to be syntax sugar for stuff already present in [C], for example: const (#define, enum), iostreams (printf), templates (#define), classes (struct), exceptions (return codes, errno, longjmp), virtual functions (function pointers), weird casting (straightforward casting), bool (int), // (/*...*/), references (pointers), new/delete (malloc/free), and so on. Any actual innovation in C++? What can be done in C++ that can't be done in C? How about function overloading and defaulted arguments? In C, I'd just embed the argument type signature into the function name, such as is done in [OpenGL]. Operator overloading? I just make functions with names describing the operation being performed, e.g. "add". Namespaces? Prefix the function or variable name, and now no one can do "using namespace" in a header file. Or use static for file scoping. Speaking of static, what about static local variables with non-constant initializers? C++ allows this, but it has to implement it using guard flag variables that get checked all the time. The same can be done explicitly in C, but the fact that the programmer has to put them there makes him/her aware of their existence, so they're likely to look for a more efficient approach, not to mention do things in a thread-safe manner. Or global variables with non-constant initializers? Like the above case, now the programmer has lost control over the order of initialization. Having things be automatic is nice when it works, but controlling the order of initialization strikes me as terribly important. And so forth... Basically, I just get less and less comfortable with C++ as time goes on, the more I find that C already had the answers in a way that's simpler and more portable. C's incomplete types, for example, seem to be more effective at data hiding than C++'s protected and private members, which become part of the ABI despite the compiler asking you to not use them (at least, not until you do "#define private public"). <> Object Orientation | programming language