«templates» 태그된 질문

템플릿 태그는 일반 프로그래밍 (특히 C ++) 및 템플릿 엔진을 사용한 데이터 / 문서 생성 등 여러 컨텍스트에서 사용됩니다. 구현시 많은 질문에이 태그를 사용하는 경우 구현이 작성된 코드 언어에 태그를 지정하십시오.

2
람다에서 static_assert가있는 constexpr이 올바른 컴파일러는 무엇입니까?
static_assert에서 를 사용하려면 if constexpr일부 템플릿 매개 변수에 따라 조건을 만들어야합니다. 흥미롭게도 코드가 람다로 싸여 있으면 gcc와 clang이 동의하지 않습니다. 다음 코드는 gcc로 컴파일되지만 clang은 if constexprtrue 일 수 없더라도 assert를 트리거 합니다. #include <utility> template<typename T> constexpr std::false_type False; template<typename T> void foo() { auto f = [](auto x) …

1
템플릿 클래스에서 C ++ 20 클래스 외부 정의
C ++의 C ++ 20 표준까지 템플릿 클래스의 개인 멤버를 사용하는 클래스 외 연산자를 정의하려면 다음과 유사한 구문을 사용합니다. template <typename T> class Foo; template <typename T> constexpr bool operator==(T lhs, const Foo<T>& rhs); template <typename T> class Foo { public: constexpr Foo(T k) : mK(k) {} constexpr friend bool …
12 c++  templates  c++20 

2
개념을 함수에 전달
개념은 컴파일 타임 술어로 정의되므로 실제로 컴파일 타임 알고리즘에 이러한 술어를 재사용 할 수 있습니까? 예를 들어 튜플의 모든 유형이 개념을 준수하는지 확인할 수 있습니까? 내가 본 한, 어떤 식 으로든 개념을 함수에 전달하는 것은 불가능합니다.이 경우 이러한 경우에 템플릿을 사용하게됩니다. #include <type_traits> template<typename T> concept FloatLike = std::is_same_v<T, float>; …


1
변수 템플릿을 템플릿 템플릿 인수로 전달할 수 있습니까?
다음의 무의미한 예제는 컴파일되지 않지만 변수 템플릿을 템플릿 템플릿 인수로 전달하는 다른 방법이 있습니까? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } 컴파일러 탐색기를 사용해보십시오

2
C ++ 템플릿 템플릿 인수 유형 공제
문자열 컨테이너를 통해 패턴 일치를 찾아 인쇄하는 코드가 있습니다. 템플릿 화 된 foo 함수에서 인쇄가 수행됩니다. 코드 #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for (auto const &finding : findings) …

1
템플릿 템플릿 클래스가있는 GCC / C ++ 17의 문제
다음 2 가지 과부하를 고려하십시오 template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } 첫 번째 클래스는 일반 클래스에서 작동하고 두 번째 클래스는 인스턴스화되지 않은 템플릿에서 작동합니다. 예를 들어 : std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields 0 이제 다음 …
10 c++  templates  gcc  clang  c++17 


3
다음과 같은 경우 종속 유형에 typename을 사용할 필요가없는 이유는 무엇입니까?
유형의 참조를 제거하는 방법에 대해 읽었 습니다 . 다음 예제를 제공합니다. #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); print_is_same<int, std::remove_reference<int>::type>(); // …


2
Foo <T> :: Foo (T &&) 호출에서 C ++가 T를 추론 할 수없는 이유는 무엇입니까?
다음과 같은 템플릿 구조가 주어집니다. template&lt;typename T&gt; struct Foo { Foo(T&amp;&amp;) {} }; 이것은 컴파일되고 다음과 T같이 추론됩니다 int. auto f = Foo(2); 그러나 이것은 컴파일되지 않습니다 : https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* &lt;source&gt;:12:15: error: no viable constructor or deduction guide for deduction of template …


1
함수 포인터 배열에서 함수 인수를 템플릿 인수로 전달
함수 포인터 배열에서 함수 인수를 템플릿 인수로 전달하고 싶습니다. Intellisense에서 무언가 잘못되었다고 불평하지만 내 코드는 MSVC를 사용하여 컴파일하는 것 같습니다. gcc와 clang은 모두 코드를 컴파일하지 못합니다. 다음 예제를 고려하십시오. static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer functions[] = { test }; template &lt;FunctionPointer function&gt; static void …
9 c++  templates  c++14 

1
클래스 전문화에 clang / gcc 불일치
전문하는 동안 나는이 문제를 건너 온 tuple_size/ tuple_element구조 바인딩 (17) C ++에서 사용자 정의 클래스. 아래 코드는 GCC에서는 컴파일되지만 clang에서는 컴파일되지 않습니다 (두 트렁크 버전 모두 아래 링크 참조). #include &lt;type_traits&gt; template&lt;typename T, typename... Ts&gt; using sfinae_t = T; template&lt;typename T, bool... Bs&gt; using sfinae_v_t = sfinae_t&lt;T, typename std::enable_if&lt;Bs&gt;::type...&gt;; template …


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.