summary refs log tree commit diff stats
path: root/doc/nimc.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/nimc.txt')
-rw-r--r--doc/nimc.txt16
1 files changed, 15 insertions, 1 deletions
diff --git a/doc/nimc.txt b/doc/nimc.txt
index c6b0b5255..831fce567 100644
--- a/doc/nimc.txt
+++ b/doc/nimc.txt
@@ -545,6 +545,20 @@ instead:
   let x = newFoo(3, 4)
 
 
+Wrapping constructors
+~~~~~~~~~~~~~~~~~~~~~
+
+Sometimes a C++ class has a private copy constructor and so code like
+``Class c = Class(1,2);`` must not be generated but instead ``Class c(1,2);``.
+For this purpose the Nim proc that wraps a C++ constructor needs to be
+annotated with the `constructor`:idx: pragma. This pragma also helps to generate
+faster C++ code since construction then doesn't invoke the copy constructor:
+
+.. code-block:: nim
+  # a better constructor of 'Foo':
+  proc constructFoo(a, b: cint): Foo {.importcpp: "Foo(@)", constructor.}
+
+
 Wrapping destructors
 ~~~~~~~~~~~~~~~~~~~~
 
@@ -608,7 +622,7 @@ allows *sloppy* interfacing with libraries written in Objective C:
 
   - (void)greet:(long)x y:(long)dummy
   {
-	  printf("Hello, World!\n");
+    printf("Hello, World!\n");
   }
   @end