1

次のようなchar引数を取るテンプレートがあります。

A<'T'>

Tを次のような変数に格納しています。

const char ch = str[0];//strは私のプログラムからの文字列です

constexpr char ch = str[0];//これも私には機能しません

私はこれを達成しようとしています:

A<ch>();

私はgcc4.7を使用していて、constexprに手を出していますが、その作業を行うことができませんでした

これを機能させる方法のアイデアはありますか?どんな助けでも大歓迎です

4

2 に答える 2

5

これは、すべてが定数式である場合にのみ機能します。

constexpr char str[] = "Hello World";
constexpr char ch = str[0];
A<ch> x;
于 2012-04-26T16:34:19.497 に答える
1

の内容がstr実行時に定義されている場合、それを実現する方法はありません。コンパイラでは、コンパイル中にテンプレート値を設定する必要があります。

これが有効な理由です。

A<'a'>();

'a'は定数値であるため、コンパイル時に認識されます。でも、これ:

void foo(const std::string &value) {
    A<value[0]> t;
}

value[0]定数値であるにもかかわらず、コンパイル中には不明であるため、ではありません。

于 2012-04-26T16:34:27.130 に答える