0

VS2017 で動作する次のコードがあります。

template <typename ... Args>
struct Composite: Args...
{
    using Composite<Args...>::foo;
    void foo(float exposure)
    {
        return this->foo(*this, exposure);
    }

    void internalBar(float e)  {  std::cout << "it works" << e;  }
};

次のように使用されます。

struct A
{
    template <typename T>
    void foo(T& device, float exposure)
    {
        device.internalBar(exposure);
    }
};

struct B
{};

struct C
{};

int main(int argc, char *argv[])
{
    auto u = Composite<A, B, C>();
    u.foo(5.0f);
    return 0;
}

問題はComposite<Args...>::foo を使用している行にあります。これは c++ 標準にないためです。そのため、gcc では機能しません。 Composite<Args...> は Composite の基本クラスではありません。

Composite は A の foo を隠すため、この行を使用する必要がありました。

単一のパックされたパラメーターのスコープを取得するにはどうすればよいですか?

ありがとう。

4

1 に答える 1