2013-01-23 57 views
0

對於算術類型T,可以有一個包含轉換操作符類:類型的轉換運算符?

template <typename T> 
class Value 
{ 
    constexpr operator T() const; 
}; 

這是operator適用於所有類型的(作爲一個例子,是工作T = std::vector<double>?),如果沒有,對什麼類型的確實它的工作?

+2

您是否嘗試過不同的'T'值?結果是什麼? –

+0

請注意,轉換運算符只定義爲*與您的類實例相同的* T。舉例來說,一個'Value '具有'int'的轉換運算符,僅此而已。 – leemes

+0

我認爲它應該適用於任何'T',也許有些情況下你不能期望隱式轉換被執行(例如縮小初始化列表中的轉換次數),但這並不是因爲任何特殊的目標類型本身。所以總而言之,我很想回答「是」,但我腦海中1%的懷疑阻止了我這樣做。哦,'std :: inizialier_list '可能不符合條件的'T' –

回答

1

一種類型是一種類型:您可以使用內置類型 來做很少的事情,而不是使用定義好的用戶 定義的類型。在這種情況下,關於唯一真正的要求是 該類型是可複製的(並且在實現中您有一些 構造它)。

而且順便說一句,我認爲你的意思:

class Value 
{ 
    template <typename T> 
    constexpr operator T() const; 
}; 

(但對於很多類型,它不會真的可以作爲一個 constconstexpr或無)。