我有一个模板化的类Helper
,看起来像这样:
template< typename Mapper >
class Helper
{
public:
using mappedType = ... ;
};
Run Code Online (Sandbox Code Playgroud)
我需要mappedType
是类中map(const int&)
方法返回的Mapper
类型.给出Mapper
类似以下的有效类型:
class DMapper
{
public:
double map(const int& val){ ... }
};
Run Code Online (Sandbox Code Playgroud)
Helper<DMapper>::mappedType
应该是double
.有没有办法在没有实例化的情况下做到这一点Mapper
?
我得到的最接近的是:
using mappedType = typename std::result_of<
decltype(&Mapper::map)(Mapper const*, const int&)
>::type;
Run Code Online (Sandbox Code Playgroud)
但type
在这种情况下没有定义.
编辑:
如果我可以避免使用伪参数int
,那就更好了(在我的具体代码中,参数并不那么简单).
我如何使用Jekyll来测试文件的存在?
为了澄清,我想运行一个{% if %}
语句来检查是否存在与我所在页面同名的图像文件.
在YAML前面的我的页面上:
----
reference-design: true
----
Run Code Online (Sandbox Code Playgroud)
在我的布局中:
{% if page.reference-design %}
{% assign filename = page.path | remove_first: '.html' %}
<!-- How can I check if file actually exists? -->
<img src="images/reference_designs/{{ filename }}.png">
{% endif %}
Run Code Online (Sandbox Code Playgroud) 我刚刚看了一下这个gitflow备忘单.我不明白这个release
分支.
谁能告诉我release
和master
分支之间的区别?
我有一个具有以下文件结构的项目:
project
|
|-------> lib1
| |----> lib1.h
|
|-------> lib2
| |----> lib2.h
|
|-------> main.cc
Run Code Online (Sandbox Code Playgroud)
这两个库lib1
,并lib2
只包含头文件,同时lib2.h
包括lib1.h
,和main.cc
包括lib2.h
.
我现在如何为这个项目编写cmake文件?我试图创建一个接口库的lib2
,但是编译器无法找到lib1.h
.以下是我的cmake文件的内容:
lib2的CMakeLists.txt:
add_library(lib2 INTERFACE)
target_sources(lib2 INTERFACE lib2.h)
target_include_directories(lib2 INTERFACE ../lib1/lib1.h)
Run Code Online (Sandbox Code Playgroud)
整个项目的CMakeLists.txt:
add_executable(project main.cc)
target_link_libraries(project lib2)
Run Code Online (Sandbox Code Playgroud)
cmake文件中有什么问题?
考虑这个模板:
template<typename t>
t add(t a, t b) {
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
如何传递不同类型的参数,以便返回值为:
int
如果两个参数都是类型int
.
float
如果其中一个参数是类型的float
.
float
如果两个参数都是类型float
.
我也尝试过为模板设置多个参数:
template<typename t, typename c>
Run Code Online (Sandbox Code Playgroud)
使用它们作为函数参数,因此它们可以是不同的(t add(t a, c b)
)但是我无法解决的问题是如何根据返回类型更改函数类型(int,float,double等)?
我有一个自定义类实现operator==
用nullptr
.
这是我的代码愚蠢到一个简单的例子:
#include <cstdint>
#include <iostream>
class C {
private:
void *v = nullptr;
public:
explicit C(void *ptr) : v(ptr) { }
bool operator==(std::nullptr_t n) const {
return this->v == n;
}
};
int main()
{
uint32_t x = 0;
C c(&x);
std::cout << (c == nullptr ? "yes" : "no") << std::endl;
C c2(nullptr);
std::cout << (c2 == nullptr ? "yes" : "no") << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
代码按预期工作,但g ++(版本6.2.1)给出了以下警告:
[Timur@Timur-Zenbook misc]$ g++ aaa.cpp -o …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的项目,需要三个只有头的库才能编译:websocketpp,spdlog和nlohmann/json.
项目结构如下所示:
??? src
??? app
? ??? CMakeLists.txt
? ??? src
? ??? test
??? CMakeLists.txt
??? core
? ??? CMakeLists.txt
? ??? include
? ??? src
? ??? test
??? vendor
??? install.cmake
??? nlohmann_json
??? spdlog
??? websocketpp
Run Code Online (Sandbox Code Playgroud)
根CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.6.1 FATAL_ERROR)
..
# External 3rd party libs that we include
include(vendor/install.cmake)
add_subdirectory(core)
add_subdirectory(app)
Run Code Online (Sandbox Code Playgroud)
这个想法基本上是每个子目录都是一个库(例如core
),并app
"聚合"所有子目录.每个库(例如core
)都是这样构建的(core/CMakeLists.txt
):
project(foo-core VERSION 0.1 LANGUAGES CXX)
add_library(foo-core
src/foobar/foobar.cc
src/foobaz/baz.cc) …
Run Code Online (Sandbox Code Playgroud) 我有这么简单的代码:
#include <iostream>
#include <set>
using std::set;
int main(int argc, char argv) {
set<int> myset;
set<int>::iterator it_l, it_u;
myset.insert(10);
it_l = myset.lower_bound(11);
it_u = myset.upper_bound(9);
std::cout << *it_l << " " << *it_u << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
这将打印1作为11的下限,10作为9的上限.
我不明白为什么打印1.我希望使用这两种方法来获得给定上限/下限的一系列值.
我正在用CMake开发一个项目.我的代码包含constexpr
Visual Studio 2015中允许但在Visual Studio 2013中不允许的方法.
如何检查CMakeLists.txt
指定编译器是否支持该功能?我在CMake文档中看到过CMAKE_CXX_KNOWN_FEATURES
,但我不明白如何使用它.
我使用css网格进行了设计,这给了我行间意想不到的空间.我用以下代码复制了我的问题:
main {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-column-gap: 10px;
grid-row-gap: 10px;
}
article {
background: red;
}
.item1 {
height: 30px;
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 1;
grid-row-end: 2;
}
.item2 {
height: 100px;
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 2;
grid-row-end: 3;
}
.item3 {
height: 300px;
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 3;
grid-row-end: 4;
}
.item4 {
height: 490px;
grid-column-start: 2;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 5;
}
.item5 {
height: 160px;
grid-column-start: 1;
grid-column-end: 2;
grid-row-start: 4; …
Run Code Online (Sandbox Code Playgroud)