-1
でテンプレート内で、私はこのコードサンプルを見つけました:2種類(?ワード)LLVMのコードではC++
template <typename TagT, typename... MemberTs> class PointerSumType {
uintptr_t Value;
typedef detail::PointerSumTypeHelper<TagT, MemberTs...> HelperT;
public:
PointerSumType() : Value(0) {}
/// A typed constructor for a specific tagged member of the sum type.
template <TagT N>
static PointerSumType
create(typename HelperT::template Lookup<N>::PointerT Pointer) {
PointerSumType Result;
void *V = HelperT::template Lookup<N>::TraitsT::getAsVoidPointer(Pointer);
assert((reinterpret_cast<uintptr_t>(V) & HelperT::TagMask) == 0 &&
"Pointer is insufficiently aligned to store the discriminant!");
Result.Value = reinterpret_cast<uintptr_t>(V) | N;
return Result;
}
TagT getTag() const { return static_cast<TagT>(Value & HelperT::TagMask); }
template <TagT N> bool is() const { return N == getTag(); }
//.....
};
私の質問は:template <TagT N>
を意味するもの、それは内部の二つの単語を持っていることが可能ですかテンプレート?
お返事ありがとうございます。
P.S.あなたはこのコードを見つけることができますhttp://llvm.org/docs/doxygen/html/PointerSumType_8h_source.html
'template'も2語です。 2つの言葉を持たないのはどうでしょうか? –
melpomene
__Non-typeテンプレートのパラメータ__ – Danh