diff -ur ORIG--Rcpp/inst/include/Rcpp/api/meat/Vector.h Rcpp/inst/include/Rcpp/api/meat/Vector.h
--- ORIG--Rcpp/inst/include/Rcpp/api/meat/Vector.h	2013-06-05 17:51:58.000000000 +0100
+++ Rcpp/inst/include/Rcpp/api/meat/Vector.h	2013-07-04 09:50:29.059536900 +0100
@@ -721,6 +721,11 @@
         return false ;
     }
      
+    template <int RTYPE>
+    bool Vector<RTYPE>::containsElementNamed( const std::string & target ) const {
+        return containsElementNamed(target.c_str()) ;
+    }
+
     namespace internal {
     
         template <typename T>
diff -ur ORIG--Rcpp/inst/include/Rcpp/vector/Vector.h Rcpp/inst/include/Rcpp/vector/Vector.h
--- ORIG--Rcpp/inst/include/Rcpp/vector/Vector.h	2013-02-19 15:36:57.000000000 +0000
+++ Rcpp/inst/include/Rcpp/vector/Vector.h	2013-07-04 09:50:08.876536900 +0100
@@ -431,6 +431,7 @@
      *  Does this vector have an element with the target name 
      */
     bool containsElementNamed( const char* target ) const ;
+    bool containsElementNamed( const std::string & target ) const ;
      
 
 protected:
diff -ur ORIG--Rcpp/inst/unitTests/cpp/Vector.cpp Rcpp/inst/unitTests/cpp/Vector.cpp
--- ORIG--Rcpp/inst/unitTests/cpp/Vector.cpp	2013-06-19 14:03:50.000000000 +0100
+++ Rcpp/inst/unitTests/cpp/Vector.cpp	2013-07-04 10:09:57.084536900 +0100
@@ -666,6 +666,12 @@
 }
 
 // [[Rcpp::export]]
+bool containsElementNamedViaStdString( List l, CharacterVector n){
+    std::string target(n[0]);
+    return l.containsElementNamed(target);
+}
+
+// [[Rcpp::export]]
 List CharacterVectorEqualityOperator( CharacterVector x, CharacterVector y){
     int n = x.size() ;
     LogicalVector eq(n), neq(n);
diff -ur ORIG--Rcpp/inst/unitTests/runit.Vector.R Rcpp/inst/unitTests/runit.Vector.R
--- ORIG--Rcpp/inst/unitTests/runit.Vector.R	2013-06-19 14:03:50.000000000 +0100
+++ Rcpp/inst/unitTests/runit.Vector.R	2013-07-04 10:29:06.722536900 +0100
@@ -581,13 +581,21 @@
 }
 
 test.containsElementNamed <- function() {
-    fun <- containsElementNamed
+    tests <- list(list(fun = containsElementNamed,
+                       msg.suffix = "char *"),
+                  list(fun = containsElementNamedViaStdString,
+                       msg.suffix = "string"))
 
     x <- list( foo = 2, bla = 1:10 )
 
-    checkEquals(fun(x, "foo"), TRUE, msg = "containsElementNamed with element")
-    checkEquals(fun(x, "bar"), FALSE, msg = "containsElementNamed without element")
-    checkEquals(fun(x, ""), FALSE, msg = "containsElementNamed with empty element")
+    for (test in tests) {
+        mk.msg <- function(msg.fmt) sprintf(msg.fmt, test$msg.suffix)
+        fun <- test$fun
+
+        checkEquals(fun(x, "foo"), TRUE, mk.msg("containsElementNamed(%s) with element"))
+        checkEquals(fun(x, "bar"), FALSE, mk.msg("containsElementNamed(%s) without element"))
+        checkEquals(fun(x, ""), FALSE, mk.msg("containsElementNamed(%s) with empty element"))
+    }
 }
 
 test.CharacterVector.equality.operator <- function(){
