簡體   English   中英

自己的std :: is_function實現

[英]own std::is_function implementation

建議在此處以以下方式實現:

template<class Ret, class... Args>
struct is_function<Ret(Args...)const> : std::true_type {};
template<class Ret, class... Args>
struct is_function<Ret(Args...)volatile> : std::true_type {};

但這是有效的函數語法嗎? Visual Studio 2013給出錯誤:

error C2270: 'abstract declarator' : modifiers not allowed on nonmember functions   

函數參數之后的constvolatile稱為cv-qualifier-seq。 C ++ 14標准的第8.3.5節第6段說:

具有cv-qualifier-seq或ref-qualifier的函數類型(包括以typedef-name(7.1.3,14.1)命名的類型)應僅顯示為:

—非靜態成員函數的函數類型,

—指向成員的指針所指向的函數類型,

—函數typedef聲明或別名聲明的頂級函數類型,

—類型參數(14.1)的默認參數中的type-id,或者

—類型參數(14.3.1)的模板參數的類型ID。

在您的示例中, Ret(Args...)constRet(Args...)volatile滿足最后一種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM