私は値を保持するテンプレートクラスを持っています。クラスにコンストラクタを追加して、下の例のような暗黙の変換を可能にすることは可能ですか?テンプレートクラスにコンストラクタを追加します
これを行うには良い方法がありますか?
#include <string>
template<typename T>
class Value
{
public:
Value(const T& value) : m_value(value) { };
private:
T m_value;
};
// I thought adding something like this would do the trick but it does not work:
/*
template<>
class Value<std::string>
{
public:
Value(const char *sz) : m_value(sz) { };
}
*/
void f(const Value<std::string> &s)
{
}
int main()
{
f(std::string("hello"));
// I want to have this working:
f("hello");
}
私はそれが暗黙的に変換可能だと思ったが、コンパイラ(g ++)参照の無効な初期化)。 – rve
といいえ、文字列はプレースホルダーではありません – rve
@rve:申し訳ありませんが、これは私の脳の一部です。私はあなたがCの文字列で 'f()'を呼びたいと思っていませんでした。私は私の答えを修正します。 – sbi