I've done what I know I can do so far. The compiler still can't choose . Overloading by Return Type in C++ - artificial::mind blog RWCString is based on the std::string from the C++ Standard Library. golang convert int to string; golang convert string to int; Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project upload; golang string split; mongodb export entire database; golang array syntax; go add to slice; golang append to list; go convert integer to string; unzip a file in google colab The stringstream class is mostly used in earlier versions of C++. You should be aware of where your code takes an int value and . If we pass a X64 int (4 bytes) as size_t (8 bytes) to a function which requires a 64bit size_t, we will receive above warning. Type conversion: Char to string - Embedded Wizard ESP8266WebServer-impl.h:624:21: error: could not convert 'args#0' from 'const char const [2]' to 'String'* ESP8266WebServer-impl.h:624:21: error: conversion from 'const int' to 'String' is ambiguous; ESP8266WebServer-impl.h:624:21: error: invalid conversion from 'int' to 'const __FlashStringHelper' [-fpermissive]* I also found these folders under "ambiguous overload for 'operator[]'" if conversion operator to int exist Otherwise either str is converted to const char * or the calls are ambiguous: str == "YES" is ambiguous if there is an external or member operator== comparing two RWCString s. "YES" == str is ambiguous if there . One is str1 and another is str2. C++ converting to template classes (oper - C++ Forum Arduino part i coded and works fine, I declared and array and used "Serial.write (array)" command. Because widening conversions are always safe, the compiler performs them silently and doesn't issue warnings. Tour Start here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site conversion from 'char' to 'String' is ambiguous - Arduino Forum it returns a c-string of the string r/p/s.. but it doesnt assign it to anything. This function is used to convert not only the integer but numerical values of any data type into a string. The first line will compile but the second will fail with the following error: error: ambiguous overload for 'operator=' (operand types are 'String' and 'ArduinoJson::JsonObjectSubscript<const char*>') The solution is to remove the ambiguity with any of the following replacement: ssid = (const char*)network["ssid"]; ssid = network["ssid"].as . conversion from int to const string is ambiguous Thanks! The easy solution is to add yet another overload: Foo& operator [] (const char *foo) {} Now, calling f ["foo"] will call the new overload . String mystring; //uses empty string constructor - okay so far mystring=Serial.read (); // uses the overloaded = operator --okay. Because widening conversions are always safe, the compiler performs them silently and doesn't issue warnings.