@@ -693,6 +693,61 @@ exposure to a number of advanced Rcpp users. The
693
693
Several dozen fully documented examples are provided at the
694
694
\href {http://gallery.rcpp.org}{Rcpp Gallery} -- which is also open for new contributions.
695
695
696
+ \subsection {Can I use default function parameters with \pkg {Rcpp}? }
697
+
698
+ Yes, you can use default parameters with \textit {some } limitations.
699
+ The limitations are mainly related to string literals and empty vectors.
700
+ This is what is currently supported:
701
+
702
+ \begin {itemize }
703
+ \item String literals delimited by quotes (e.g. \code {"foo"})
704
+ \item Integer and Decimal numeric values (e.g. \code {10} or \code {4.5})
705
+ \item Pre-defined constants including:
706
+ \begin {itemize }
707
+ \item Booleans: \code {true} and \code {false}
708
+ \item Null Values: \code {R_NilValue}, \code {NA_STRING},
709
+ \code {NA_INTEGER}, \code {NA_REAL}, and \code {NA_LOGICAL}.
710
+ \end {itemize }
711
+ \item Selected vector types can be instantiated using the empty form of the
712
+ \code {::create} static member function.
713
+ \begin {itemize }
714
+ \item \code {CharacterVector}, \code {IntegerVector}, and
715
+ \code {NumericVector}
716
+ \end {itemize }
717
+ \item Matrix types instantiated using the rows, cols constructor \code {Rcpp::<Type>Matrix n(rows,cols)}
718
+ \begin {itemize }
719
+ \item \code {CharacterMatrix}, \code {IntegerMatrix}, and
720
+ \code {NumericMatrix})
721
+ \end {itemize }
722
+ \end {itemize }
723
+
724
+ To illustrate, please consider the following example that provides a short
725
+ how to:
726
+
727
+ <<lang =cpp >>=
728
+ # include <Rcpp.h>
729
+
730
+ // [[Rcpp :: export ]]
731
+ void sample_defaults(NumericVector x = NumericVector :: create(), // Size 0 vector
732
+ bool bias = true , // Set to true
733
+ std :: string method = " rcpp rules!" ){ // Default string
734
+ Rcpp :: Rcout << " x size: " << x.size() << " , " ;
735
+ Rcpp :: Rcout << " bias value: " << bias << " , " ;
736
+ Rcpp :: Rcout << " method value: " << method << std :: endl ;
737
+ }
738
+
739
+ /*** R
740
+ sample_defaults() # all defaults
741
+ sample_defaults(1 : 5 ) # supply x values
742
+ sample_defaults(bias = FALSE ,
743
+ method = " rstats" ) # supply bool and string
744
+ */
745
+ @
746
+
747
+ Note: In \code {cpp}, the default \code {bool} values are \code {true} and
748
+ \code {false} whereas in R the valid types are \code {TRUE} or \code {FALSE}.
749
+
750
+
696
751
\subsection {Can I use templates with \pkg {Rcpp} ? }
697
752
698
753
\begin {quote }
0 commit comments