🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310389

Re: variadic templates - rozwijanie argumentów, błąd kompilacji

#310389
From: Wojciech Muła
Date: Sat, 17 Sep 2022 20:43
33 lines
2545 bytes
On Wednesday, September 14, 2022 at 6:34:23 PM UTC+2, Maciek wrote:
> kompilator nie chce rozwinąć funkcji i nie pasuje mu liczba argumentów 

Nie może rozwinąć funkcji, bo ona jest w jednym wariancie. Parametryzację
masz na poziomie klasy, nie metody.

> Na czym polega mój błąd ?

Tak pi*drzwi sygnatura tej jednej metody to (int, int, int , int),
bo T = int, Types = {int, int, int}.

Więc to co się teraz dzieje w Twoim kodzie:

T_Operators_tests<int,int,int,int>::print(int val, {int, int, int} args)
{
    std::cout << val;
    print(args[0], args[1], args[2]);
}

Nie masz *w klasie* metody print(int, int, int) i to właśnie napisał Ci kompilator:
"no overloaded function takes 3 arguments".

Rozwiązanie to niezależnie od klasy sparametryzować metodę `print`:

template <typename U, typename... TU>
void print(U val, TU... args) {
    // ...
}

BTW, doczytaj o perfect forwarding, bo przekazywanie
wartości w C++ to proszenie się o kłopoty.

w.
Technical Details
Message-ID: <5c254ba2-7fed-45ab-9fce-b303e3793849n@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!1.us.feeder.erje.net!feeder.erje.net!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <28531d26-4cfe-4805-99ba-96dcbf0e18e4n@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:5dcd:0:b0:35c:e209:39e7 with SMTP id e13-20020ac85dcd000000b0035ce20939e7mr1261270qtx.651.1663447423902;        Sat, 17 Sep 2022 13:43:43 -0700 (PDT)
X-Received: by 2002:a05:622a:148e:b0:35c:db7a:168d with SMTP id t14-20020a05622a148e00b0035cdb7a168dmr3712448qtx.171.1663447423677; Sat, 17 Sep 2022 13:43:43 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!1.us.feeder.erje.net!feeder.erje.net!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Sat, 17 Sep 2022 13:43:43 -0700 (PDT)
In-Reply-To: <28531d26-4cfe-4805-99ba-96dcbf0e18e4n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2a01:112f:430d:c800:fe67:a604:74de:72e2; posting-account=VFwkXwoAAADdT4-lLKRZrMYkTjizGoyn
NNTP-Posting-Host: 2a01:112f:430d:c800:fe67:a604:74de:72e2
References: <28531d26-4cfe-4805-99ba-96dcbf0e18e4n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5c254ba2-7fed-45ab-9fce-b303e3793849n@googlegroups.com>
Subject: Re: variadic templates - rozwijanie
 argumentów, błąd kompilacji
From: Wojciech Muła <wojciech_mula@poczta.onet.pl>
Injection-Date: Sat, 17 Sep 2022 20:43:43 +0000
X-Received-Bytes: 2448
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit