これはまったく可能かどうかわかりませんが、テンプレートのパラメータを特定のクラスから「隠す」ことができます。ここで私は、次のコードを持っていると言う、私の意味は次のとおりです。C++テンプレートのパラメータを隠す
template<class A, int b>
class Foo
{
};
template<template<class,int> class Foo_specialized, class A, int b>
class Bar
{
Foo_specialized<A,b> obj;
};
今すぐはずバーは、Aについて知っておく必要がありますが、Bについて知る必要がありません。 当然のことながら、このようなものは、(以下は単にアイデアを説明するために擬似コードで)完璧になる:
template<template<int> class Foo_specialized_by_first_parameter, int b>
class Bar
{
Foo_specialized_by_first_parameter<b> obj;
};
私はそれがすべてで可能だと、アイデアはこのような何かを持っているだろう、本当にわからないんだけどインスタンス化するときBar:
Bar<Foo<float>, 5> bar_instance;
もちろん、Fooは1つのパラメータを受け入れないため、これは機能しません。 基本的には(Foo<float>)<5>
のようなものが必要です。私が考えることができる最も近いことは、ハズケルのカリングです。
template <template<int> class Foo_specialized_by_first_parameter, int b>
class Bar
{
Foo_specialized_by_first_parameter<b> obj;
};
であなたが行うことができ、
template <int N>
using Foo_float = Foo<float, N>;
そして:
単純に 'Bar'ではないのですが、 'template テンプレート Foo、int ARG、class ... FOO_ARGS> struct Bar {Foo obj;}; ' –
SergeyA
テンプレートレベルのラムダ(または少なくともテンプレートレベルの部分的なアプリケーション)を探しているようですね。 – melpomene
@melpomeneええ、それはかなり近いアイデアだと思います。私はそれがC + +で利用可能だとは思わないが、それは? – lightxbulb