コンストラクトを機能させる最良の方法は.template operator
、バグレポートをIBMに提出することです。
このコードはC++標準に準拠しています。実際、これがこのコードを書くための唯一の合法的な方法です。
レポートを提出するとき、証拠として以下を使用できます。
§14.2/4
状態:
メンバーテンプレートの特殊化の名前が。の後に表示される場合。または-> postfix-expressionで...そしてpostfix-expressionのオブジェクト式はタイプに依存します...メンバーテンプレート名の前にキーワードtemplateを付ける必要があります。..。
最初の部分: " "は、メンバーテンプレートの特殊化の名前であるthe name of a member template specialization
ために適用されます。operator()<int>
これの証拠があります§14.2/1
:
テンプレートの特殊化は、 template-idで参照できます。
§14.2/1
次に、に一致するtemplate-idの構文を指定しますoperator()<int>
。
2番目の部分: " "は、タイプに依存and the object expression of the _postfix-expression_ is
type-dependent
するため適用されます。次の理由でタイプに依存し ます:obj
obj
§14.6.2.2/3
id式は、次のものが含まれている場合、型に依存します。-依存型で宣言された1つ以上の宣言に名前ルックアップによって関連付けられた識別子...
この場合、obj
はに関連付けられていますT&
。これは依存型です(T
テンプレートパラメーターであるため)。
私が行った多くの主張についての参照を提供していないので、これは決定的な答えの半分にすぎません。でも、私はもう1時間ここにいるので、おそらくやめる時間です。