C 可變引數的模板展開?

時間 2021-06-07 06:30:55

1樓:

因為這不是合理的展開場所。在C++17之前,我們都是這麼幹的。

(void

)std

::initializer_list

;不過這和C++其他很多tricky的寫法一樣,都是歷史了。無聊智力遊戲。

2樓:

//1.

template

void print_args(T t)

template

void print_args(T t, Rest... rest)//2.

template

void print_arg(T& t)

template

void print_args(Args... args);}print_args(1, 2.4, "test");

3樓:

題主,原因樓上已經說得很清楚了,給你乙個解決方案吧,libcxx 裡的做法:

template

..._Tp

>_LIBCPP_INLINE_VISIBILITYvoid

__swallow

(_Tp

&&...)

_NOEXCEPT

{}template

_Tuple

>_LIBCPP_INLINE_VISIBILITYtypename

enable_if

<__tuple_assignable

<_Tuple

,tuple

<_Tp...

>>::

value

,__tuple_impl

&>::

type

operator=(

_Tuple

&&__t

)_NOEXCEPT_

((__all

_Tp&

,typename

tuple_element

<_Indx

,typename

__make_tuple_types

<_Tuple

>::

type

>::

type

>::

value

...>::

value

)) 題主就可以

__swallow(func(u)...);

4樓:573xmcgcg

沒有func(u)...;這種寫法,如果你想為paramter pack裡面的所有元素依次呼叫func()可以這麼寫:

template

T>void

func(T

value

)template

T>voidg(

Tvalue

)template

typename

...U

>voidg(

Tvalue,U

...u)

C 11 模板引數推導(Template Argument Deduction)是如何工作的?

electrlife 關於模版推導,借題主地盤,請教下如下情況如何理解?template class MyVector private T aa int main int argc,const char argv 這裡本意是請問 push back 的const 在推導過程是不是會重複const c...

請問c 模板函式如何限定引數型別?

Lee Revere template T void test T t requires std is same v std is same v std is same v std is same v 或者concept namespace detail template VALID T void ...

python中函式的預設引數和可變長引數如何排列?

孫竟 其實你的問題適合這樣處理 import time deftimeit times 1 def wrap func,args,kwargs start time time clock foriin xrange times func args,kwargs end time time clock...