Index: libcfa/src/collections/string.cfa
===================================================================
--- libcfa/src/collections/string.cfa	(revision 570e7ad00de8288cde75cec124f5ec3910662225)
+++ libcfa/src/collections/string.cfa	(revision d03a386f1d6cd83b3e5eabdfdeb1a1a6903d70e6)
@@ -14,4 +14,6 @@
 //
 
+#define _COMPILING_STRING_CFA_
+
 #include "string.hfa"
 #include "string_res.hfa"
@@ -40,5 +42,5 @@
 }
 
-void ?{}( string & s, string c ) {  // c is a memcpy of the real src string
+PBOOST void ?{}( string & s, string c ) {  // c is a memcpy of the real src string
 	(s.inner) { malloc() };
 	?{}( *s.inner, *c.inner, COPY_VALUE );
@@ -146,5 +148,5 @@
 // Assignment
 
-string & ?=?( string & s, string c ) {
+PBOOST string & ?=?( string & s, string c ) {
 	(*s.inner) = (*c.inner);
 	return s;
@@ -326,5 +328,5 @@
 }
 
-string ?+?( string s, string s2 ) {
+PBOOST string ?+?( string s, string s2 ) {
 	string ret = s;
 	ret += s2;
@@ -375,5 +377,5 @@
 }
 
-string ?*?( string s, strmul_factor_t factor ) {
+PBOOST string ?*?( string s, strmul_factor_t factor ) {
 	string ret = s;
 	ret *= factor;
Index: libcfa/src/collections/string.hfa
===================================================================
--- libcfa/src/collections/string.hfa	(revision 570e7ad00de8288cde75cec124f5ec3910662225)
+++ libcfa/src/collections/string.hfa	(revision d03a386f1d6cd83b3e5eabdfdeb1a1a6903d70e6)
@@ -19,4 +19,7 @@
 #include <string_res.hfa>
 
+static struct __cfa_string_preference_boost_t {} __cfa_string_preference_boost;
+#define PBOOST forall ( | { __cfa_string_preference_boost_t __cfa_string_preference_boost; } )
+
 struct string {
 	string_res * inner;
@@ -28,5 +31,5 @@
 void ?{}( string & s );									// empty string
 void ?{}( string & s, string s2, size_t maxlen );
-void ?{}( string & s, string s2 );
+PBOOST void ?{}( string & s, string s2 );
 void ?{}( string & s, char );
 void ?{}( string & s, const char * c );					// copy from string literal (NULL-terminated)
@@ -48,5 +51,5 @@
 // string str( long double _Complex rhs );
 
-string & ?=?( string & s, string c );
+PBOOST string & ?=?( string & s, string c );
 string & ?=?( string & s, const char * c );				// copy from "literal"
 string & ?=?( string & s, char c );						// copy from 'l'
@@ -162,5 +165,5 @@
 string ?+?( string s, char c );
 string ?+?( char c, string s );
-string ?+?( string s, string s2 );
+PBOOST string ?+?( string s, string s2 );
 string ?+?( const char * s, char c );					// not backwards compatible
 string ?+?( char c, const char * s );
@@ -184,8 +187,8 @@
 void ?*=?( string & s, strmul_factor_t factor );
 string ?*?( char c, strmul_factor_t factor );					// not backwards compatible
-string ?*?( string s, strmul_factor_t factor );
+PBOOST string ?*?( string s, strmul_factor_t factor );
 string ?*?( const char * s, strmul_factor_t factor );
 static inline string ?*?( strmul_factor_t factor, char s ) { return s * factor; }
-static inline string ?*?( strmul_factor_t factor, string s ) { return s * factor; }
+PBOOST static inline string ?*?( strmul_factor_t factor, string s ) { return s * factor; }
 static inline string ?*?( strmul_factor_t factor, const char * s ) { return s * factor; }
 
@@ -314,2 +317,6 @@
 	return translate( S, f );
 }
+
+#ifndef _COMPILING_STRING_CFA_
+#undef PBOOST
+#endif
