для возвращаемого типа. Полный пример:

прощенная версия моей системы типов:

#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" };
}

В то время какa а такжеb компиляции,c нет, и причина в том, что я пытаюсь инициализировать изconst char, Это поднимает два вопроса:

Почемуb возможно, но неc? Это из-за вложенного шаблона вstd::vector<Box<std::string> >?

Могу я сделатьc работать без разрушения общего механизма бокса (ср.typedef Box<double> Double?

Ответы на вопрос(0)

Ваш ответ на вопрос