私は特別な処理とラッピングを使用して、さまざまなタイプをリストに追加するために使用しているクラスのテンプレートメンバー関数を持っていますstd :: stringとchar []の両方の引数を扱う特殊なテンプレートメンバー関数
template<typename V> const var& addvar(const V& v);
template<> const var& addvar<std::string>(const std::string& v) {/*stuff*/}
しかし、私はそれには、このような文字列(まあ、constのchar配列)の周りに渡している:
object.addvar("lol");
私は取り扱いしていますが、特定のタイプの)VaRのオブジェクトにラップアップstd :: stringsとしてのすべてのもの、これはconst char配列参照の何らかの並べ替えとしてポップインしますテンプレート・パラメータ・タイプの控除に適用されます。だから私は、上記のstd :: stringの特殊化でさえも、そのための関数を持たないことについてのエラーを得る。私は、テンプレート配列サイズ控除に精通してるので、私はそのようなことを扱うことができるaddvarを作成するために、そのフォーマットを使用しようとしている、のようなもの:
template<size_t N> const var& addvar<char>(const char& (&v)[N]) {/*stuff*/}
しかし、物事は違法程度コンパイルエラーと恐ろしくうとしています参照配列。これはVC++ 2010にあります。それには何らかの不思議さがありますが、私はここで何か根本的なものを台無しにしていると感じています。
ああ、私はaddvarでそれを試してみましたが、うまくいかなかったのですが、の方法でうまく動作します。ありがとう! –
user173342