Não é possível atribuir literal de seqüência de caracteres ao vetor box std :: string
Esta é uma versão simplificada do meu sistema de tipos:
#include <string>
#include <vector>
template<typename T>
class Box {
public:
Box(const T& value) : _value(value) {};
private:
T _value;
/* ... */
};
typedef Box<int> Int;
typedef Box<double> Double;
typedef Box<std::string> String;
int main(int argc, char* argv[]) {
String a("abc");
std::vector<String> b = { std::string("abc"), std::string("def") };
// error C2664: 'Box<std::string>::Box(const Box<std::string> &)' : cannot convert argument 1 from 'const char' to 'const std::string &'
std::vector<String> c = { "abc", "def" };
}
Enquantoa
eb
compilar,c
não e a razão parece ser que eu tento inicializar a partir deconst char
. Isso levanta duas questões:
Porque éb
possível, mas nãoc
? É por causa do modelo aninhado emstd::vector<Box<std::string> >
?
Posso fazerc
trabalhar sem destruir o mecanismo geral de boxe (cf.typedef Box<double> Double
?