variable-templates

    2热度

    1回答

    我有一个工作的Spirit-X3分析器,它可以解析两个紧密相关的语法来设置草稿和检查器位置。我定义了两个可变模板特作为解析器语法的两种方言: // general variable template template<class Format> auto const position = []{}; // template specialization for algebraic nota

    8热度

    2回答

    假设您有一个元组类型,并且想要提取其模板参数包以实例化另一个模板。如果这是一个类型的模板,那么我可以有一个这样的工具: template < typename Tuple, template <typename...> typename What > struct PutTupleInT; template < typename... Types, template <typename...

    6热度

    2回答

    这似乎是另一个“谁做得很好?”因为gcc 6.0.0和clang 3.7.0的行为不同。 让我们假设我们有一个变量的模板,这需要const char *非模板参数并专用于给定的指针: constexpr char INSTANCE_NAME[]{"FOO"}; struct Struct{ void function() const { std::cout << __PRETTY_FUNCTI

    0热度

    1回答

    我可以对模板变量使用enable_if(或者是否存在一些替代技术)。例如 typedef float Float; typedef double Double; template<class T> constexpr Bool IsFloat = std::is_same_v<T, Float>; template<class T> constexpr Bool IsDouble =

    3热度

    1回答

    以下代码: /tmp/ccuciovi.o: In function `double fun<double>(double)': gcc-bug.cpp:(.text._Z3funIdET_S0_[_Z3funIdET_S0_]+0xd): undefined reference to `foo<double>' collect2: error: ld returned 1 exit stat

    4热度

    2回答

    是否可以在内联constexpr函数内使用变量模板而不暴露变量模板本身? 例如,该编译和工作原理: template<typename T> constexpr T twelve_hundred = T(1200.0); template<typename T> inline constexpr T centsToOctaves(const T cents) { return ce

    5热度

    1回答

    我想在一个头文件中转发声明变量模板,然后在单独的编译单元中有实际的实例。 我被带到相信C++ 14变量模板非常像静态类变量那样操作。不幸的是,这似乎并不是这样,它阻止了我向前声明我的变量模板。 template <typename T> struct Variable { static int variable; }; template <typename T> extern i

    4热度

    1回答

    当我试图专注一个模板变量为一个通用的容器(例如std::list<...>,而不是一个具体的一个,如std::list<double>)我得到一个链接错误与gcc 5.3(但不与clang 3.5 ) /tmp/ccvxFv3R.s: Assembler messages: /tmp/ccvxFv3R.s:206: Error: symbol `_ZL9separator' is already

    5热度

    1回答

    我有以下代码: // Case #1 float f = 1.0f; float f2 = sqrt(f * pi); // Case #2 double d = 1.0; double d2 = sqrt(d * pi); 有什么办法来定义变量pi使operator*和sqrt将在float S IN案例#1操作,但将在案例#2 double s运行? 也许这可能与C++ 14变

    0热度

    2回答

    环境令人惊讶值:vs2013 RC5/vs2017; 项目:Win32控制台应用程序; 表示:编译和运行了一小会儿,然后中断和观看变量 “TASK_”; 如果 “add_task(&测试::打印,&吨,STR,10)”,在主FUNC中, “TASK_” 是正确值; 但是如果在func mytest中“add_task(& Test :: print,& t,str,10)”,则“task_”是错误