왜이 코드에 대해 이상한 결과가 나옵니까? 올바른 방식으로 유형을 테스트하는 방법은 무엇입니까? 유형이 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-GCC 7.2.0을 사용 = C++ 17, 나는 내가 두 개의 서로 다른 출력을 가지고 왜 출력 "01" 있어? 그들은 같은 유형이 아닌가?
'템플릿 더미 구조체; 템플릿 구조체 Dummy ;'컴파일러에서 오류 메시지 형식을 제공합니다. –
Jarod42