On 4/3/14, 11:59 PM, Mason McGill wrote:
"Walter Bright"  wrote in message news:lhi1lt$269h$1...@digitalmars.com...
Here's Andrei's proposal:

    extern (C++) template nspace() {
        int foo();
    }
This seems misleading to readers of future code.
- An "extern (C++)" function lets you use a C++ function.
- An "extern (C++)" interface lets you use a C++ interface (declared as
a class, as is always the case in C++).
- An "extern (C++)" template lets you use a C++... namespace?

On Thursday, 3 April 2014 at 11:19:53 UTC, Daniel Murphy wrote:
Why not just

pragma(cpp_namespace, "outer")
{
   pragma(cpp_namespace, "inner")
   {
       extern(C++) void func();
   }
}
This really has only one obvious interpretation (the correct one), and
seems to be a rather harmless addition to the language.

It also fulfills the goal of allowing access to C++ libraries without
cluttering D with C++ language features.  I don't want to have to
explain to my students the difference between "modules" "D templates"
and "C++ namespace templates" (it reminds me of old- and new-style
classes in Python 2).

The above well describes my first reaction to the syntax (except the part about having students). And my second reaction too, in fact.

Reply via email to