저는 프로젝트에서 템플릿 변형 명시 연산자를 사용하여 변형 된 유사 유형의 명시적인 변환을 구현했습니다. 내 문제를 재현 최소한의 예는 다음 (14 ++ C 모드)과 같은 : 내가 직면 #include <iostream>
#include <stdexcept>
#include <cmath>
using namespace std;
class A
{
다음 코드가 예상대로 작동하지 않는 이유를 설명 할 수 있습니까? 이 경우에는 Failed으로 표시된 것이 아닌 것처럼 보이지만 static_asserts가 모두 통과한다고 가정합니다. 과부하 해결에 대한 내 이해는 인수가 인수와 가장 밀접하게 관련되어 있다는 것입니다. 최상위 정의는 C 스타일 배열이며 맨 아래 정의는 쇠퇴 한 char *입니다. 선택 과
함수에 std::min을 전달하면 컴파일되지 않습니다. std::min의 libcpp 선언을 내 소스 파일에 복사했는데 작동합니다. 표준 버전에 어떤 문제가 있습니까? clang과 gcc도 마찬가지입니다. godbolt에서 테스트 : 그 소리와 GCC에 대한 https://godbolt.org/g/zwRqUA #include <thread>
#includ
: struct A
{
void foo(int i) { /*...*/ }
template<typename T> void foo(T t) { /*...*/ }
}
이 어떻게 명시 적으로 명령하지 않는 한 템플릿 인스턴스화를 방지 할 수 있습니다? A a;
a.foo<int>(1); // ok
a.foo<double>(1.0); /
함수 (전역 함수 또는 멤버 함수가 될 수 있음)가 해당 매개 변수에만 오버로드되므로 (오버로드가 항상 모든 const 또는 모든 비 const가되도록) . 지정된 매개 변수에 따라 오버로드 주소를 선택하는 템플릿을 작성하는 방법이 있습니까? 예를 들면 : struct Foo {
double bar(double n, double m);
i
내가, 포인터, 참조 또는 일정한 기준이 setter 함수로 전달 될 수있다 할 노력하고 있어요 : 나는 것을 보았다 class A{
std::string * p;
std::string st;
public:
A():p(0)
{}
A& setS(const std::string& s){
std:
내가 새로운 C++ 의미를 배우고 ambigious 내가이 프로그램에 오류 가지고 : #include <iostream>
#include <string>
#include <utility>
std::string foo(std::string str)
{
return str + " call from normal";
}
std::string
안녕하세요 여러분, 오버로드 및 오버라이드가 어쨌든 시뮬레이션 적이라는 다음 C++ 코드에 대해 당혹 스럽습니다. 여기 내 컴파일러가 여기에 error: no matching function for call to 'Derived::show()'
note: candidate is:
note: void Derived::show(int)
note: cand
http://www.cplusplus.com/reference/vector/vector/vector/을 참조하는 벡터 컨테이너를 구현하려고합니다. 몇 가지 문제를 일으키는 두 가지 생성자가 있습니다. template <typename T>
vector (size_type n, const T& val);
template <typename T>
temp
튜플 인 경우 돌보지 않고 입력 인수를 함수에 적용해야하는 경우가 있습니다. 튜플 인 경우 을 풀어야을 언 패킹해야하므로 함수 인수를 검색하지 않아도됩니다. 여기 내가 시도 것을 이다 : 그것은 내가 기대했던 인 모호함을 초래 template <typename Callable, typename Tuple>
auto geniune_apply(Callable