मेरे पास इस कोड के लिए अजीब आउटपुट क्यों है? एक प्रकार के लिए सही तरीके से परीक्षण कैसे करें?यह पता लगाने के लिए कि कोई प्रकार std :: tuple है या नहीं?
#include <iostream>
#include <tuple>
#include <type_traits>
template<typename T> struct is_tuple : std::false_type {};
template<typename... Ts> struct is_tuple<std::tuple<Ts...>> : std::true_type {};
struct TraitBlock {
using BlockLocation = struct { std::uint64_t x, y, z; };
};
struct TraitRock {};
struct ItemTemplate{
static constexpr auto traits = std::make_tuple(
TraitBlock{},
TraitRock{}
);
};
int main(){
using A = std::tuple<char, int,double,char>;
std::cout << is_tuple<decltype(ItemTemplate::traits)>::value
<< is_tuple<decltype(std::make_tuple(
TraitBlock{},
TraitRock{}
))>::value
<< std::endl;
}
मैं -std साथ mingw64-जीसीसी 7.2.0 का उपयोग = C++ 17, मुझे मिल उत्पादन "01" क्यों मैं दो अलग-अलग उत्पादन मिल गया? क्या वे एक ही प्रकार के नहीं हैं?
आप टेम्पलेट स्ट्रक्चर डमी जैसे कुछ उपयोग कर सकते हैं; टेम्पलेट स्ट्रक्चर डमी ; 'कंपाइलर को आपको त्रुटि संदेश में प्रकार देने देता है। –
Jarod42