簡體   English   中英

函數模板專門化中的布爾返回值

[英]bool return value in function template specialization

我想知道為什么下面的函數模板特化無法編譯(由於no return statement in function returning non-void )。

class Boring {
public:
    template<typename T> bool eval() const { }
};

template<> inline bool Boring::eval<int>() const { return true; }

我希望除非使用,否則不會對非專業功能模板進行評估。 如果返回類型更改為T* ,則以下代碼將成功編譯。

int x = 5;

class Boring {
public:
    template<typename T> T* eval() const { }
};

template<> inline int* Boring::eval<int>() const { return &x; }

這兩個程序的格式都正確。 盡管如果實例化和調用主eval模板會發生未定義的行為,但這不會使程序格式錯誤。 但是,您的編譯器處於某種模式,在這種模式下,它將某些警告視為錯誤(也許是-Wall ),或者默認情況下會將特定警告視為錯誤。

暫無
暫無

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

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